{
  "components": {
    "schemas": {
      "AccountApiAccount": {
        "additionalProperties": false,
        "description": "An account, as the owner of a resource: a :class:`smarter.apps.account.models.Account`'s number.",
        "properties": {
          "accountNumber": {
            "description": "Account.account_number, e.g. 1234-5678-9012.",
            "title": "Accountnumber",
            "type": "string"
          }
        },
        "required": [
          "accountNumber"
        ],
        "title": "AccountApiAccount",
        "type": "object"
      },
      "AccountApiAccountDetail": {
        "additionalProperties": false,
        "description": "An account: a :class:`smarter.apps.account.models.Account`.",
        "properties": {
          "accountNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.account_number, e.g. 1234-5678-9012.",
            "title": "Accountnumber"
          },
          "address1": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.address1.",
            "title": "Address1"
          },
          "address2": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.address2.",
            "title": "Address2"
          },
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.city.",
            "title": "City"
          },
          "companyName": {
            "description": "Account.company_name.",
            "title": "Companyname",
            "type": "string"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.country.",
            "title": "Country"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.currency, e.g. USD.",
            "title": "Currency"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "hashedId": {
            "description": "The account's hashed id, e.g. rMTAwMDAwMQx.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isActive": {
            "description": "Account.is_active.",
            "title": "Isactive",
            "type": "boolean"
          },
          "isDefaultAccount": {
            "description": "Account.is_default_account.",
            "title": "Isdefaultaccount",
            "type": "boolean"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.language, e.g. EN.",
            "title": "Language"
          },
          "name": {
            "description": "MetaDataModel.name.",
            "title": "Name",
            "type": "string"
          },
          "phoneNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.phone_number.",
            "title": "Phonenumber"
          },
          "postalCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.postal_code.",
            "title": "Postalcode"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.state.",
            "title": "State"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.timezone, e.g. America/Denver.",
            "title": "Timezone"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "isDefaultAccount",
          "companyName",
          "isActive"
        ],
        "title": "AccountApiAccountDetail",
        "type": "object"
      },
      "AccountApiContact": {
        "additionalProperties": false,
        "description": "A contact of an account, who receives its notices: a :class:`smarter.apps.account.models.AccountContact`.",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/AccountApiAccount",
            "description": "AccountContact.account."
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "email": {
            "description": "AccountContact.email.",
            "title": "Email",
            "type": "string"
          },
          "firstName": {
            "description": "AccountContact.first_name.",
            "title": "Firstname",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isPrimary": {
            "description": "AccountContact.is_primary: whether it is the account's main contact.",
            "title": "Isprimary",
            "type": "boolean"
          },
          "isTest": {
            "description": "AccountContact.is_test: whether a test created it.",
            "title": "Istest",
            "type": "boolean"
          },
          "lastName": {
            "description": "AccountContact.last_name.",
            "title": "Lastname",
            "type": "string"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "AccountContact.phone.",
            "title": "Phone"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "welcomed": {
            "description": "AccountContact.welcomed: whether it was sent the welcome email.",
            "title": "Welcomed",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "account",
          "firstName",
          "lastName",
          "email",
          "isPrimary",
          "isTest",
          "welcomed"
        ],
        "title": "AccountApiContact",
        "type": "object"
      },
      "AccountApiProfile": {
        "additionalProperties": false,
        "description": "A user's membership of an account: a :class:`smarter.apps.account.models.UserProfile`.",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/AccountApiAccount",
            "description": "UserProfile.account."
          },
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "hashedId": {
            "description": "The user profile's hashed id.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isTest": {
            "description": "UserProfile.is_test: whether a test created it.",
            "title": "Istest",
            "type": "boolean"
          },
          "name": {
            "description": "MetaDataModel.name.",
            "title": "Name",
            "type": "string"
          },
          "profileImage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UserProfile.profile_image: the url of the image that the user uploaded, which takes precedence.",
            "title": "Profileimage"
          },
          "profileImageUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UserProfile.profile_image_url: the image that the oauth provider supplied.",
            "title": "Profileimageurl"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "user": {
            "$ref": "#/components/schemas/AccountApiUserDetail",
            "description": "UserProfile.user."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "user",
          "account",
          "isTest"
        ],
        "title": "AccountApiProfile",
        "type": "object"
      },
      "AccountApiUser": {
        "additionalProperties": false,
        "description": "A user, as the owner of a resource: a :class:`django.contrib.auth.models.User`'s username and email.",
        "properties": {
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "User.email.",
            "title": "Email"
          },
          "username": {
            "description": "User.username.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username"
        ],
        "title": "AccountApiUser",
        "type": "object"
      },
      "AccountApiUserDetail": {
        "additionalProperties": false,
        "description": "A user: a :class:`django.contrib.auth.models.User`, without its password and permissions.",
        "properties": {
          "email": {
            "default": "",
            "description": "User.email.",
            "title": "Email",
            "type": "string"
          },
          "firstName": {
            "default": "",
            "description": "User.first_name.",
            "title": "Firstname",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isStaff": {
            "description": "User.is_staff: whether the user administers their account.",
            "title": "Isstaff",
            "type": "boolean"
          },
          "isSuperuser": {
            "description": "User.is_superuser: whether the user administers the platform.",
            "title": "Issuperuser",
            "type": "boolean"
          },
          "lastName": {
            "default": "",
            "description": "User.last_name.",
            "title": "Lastname",
            "type": "string"
          },
          "username": {
            "description": "User.username.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "id",
          "username",
          "isStaff",
          "isSuperuser"
        ],
        "title": "AccountApiUserDetail",
        "type": "object"
      },
      "AccountApiUserProfile": {
        "additionalProperties": false,
        "description": "The owner of a resource: a :class:`smarter.apps.account.models.UserProfile`'s user and account.",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/AccountApiAccount"
          },
          "user": {
            "$ref": "#/components/schemas/AccountApiUser"
          }
        },
        "required": [
          "user",
          "account"
        ],
        "title": "AccountApiUserProfile",
        "type": "object"
      },
      "ApiConnection": {
        "description": "Smarter API - generic API Connection class.",
        "properties": {
          "apiKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The API key for authentication, if required.",
            "title": "Apikey"
          },
          "authMethod": {
            "default": "none",
            "description": "The authentication method to use. Example: 'Basic Auth', 'Token Auth'.",
            "title": "Authmethod",
            "type": "string"
          },
          "baseUrl": {
            "description": "The root domain of the API. Example: 'https://api.example.com'.",
            "title": "Baseurl",
            "type": "string"
          },
          "proxyHost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The remote host of the proxy connection.",
            "title": "Proxyhost"
          },
          "proxyPassword": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The password for the proxy connection.",
            "title": "Proxypassword"
          },
          "proxyPort": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The port of the proxy connection.",
            "title": "Proxyport"
          },
          "proxyProtocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The protocol of the proxy connection. Example: 'http', 'https'.",
            "title": "Proxyprotocol"
          },
          "proxyUsername": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The username for the proxy connection.",
            "title": "Proxyusername"
          },
          "timeout": {
            "default": 30,
            "description": "The timeout for the API request in seconds. Default is 30 seconds.",
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          }
        },
        "required": [
          "baseUrl"
        ],
        "title": "ApiConnection",
        "type": "object"
      },
      "ApiData": {
        "description": "Smarter API - apiData class.",
        "properties": {
          "body": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Any valid JSON object containing the body of the API request, if applicable.",
            "title": "Body"
          },
          "endpoint": {
            "description": "The endpoint path for the API. Example: '/v1/weather'.",
            "maxLength": 255,
            "title": "Endpoint",
            "type": "string"
          },
          "headers": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RequestHeader"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A list of JSON dict containing headers to be sent with the API request. Example: {'Authorization': 'Bearer <token>'}",
            "title": "Headers"
          },
          "limit": {
            "anyOf": [
              {
                "exclusiveMinimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 100,
            "description": "The maximum number of records to return from the API. Default is 100.",
            "title": "Limit"
          },
          "method": {
            "default": "GET",
            "description": "The HTTP method to use for the API request. Default is 'GET'.",
            "maxLength": 10,
            "title": "Method",
            "type": "string"
          },
          "parameters": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/Parameter"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A JSON dict containing parameter names and data types. Example: {'city': {'type': 'string', 'description': 'City name'}}",
            "title": "Parameters"
          },
          "testValues": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/TestValue"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A JSON dict containing test values for each parameter. Example: {'city': 'San Francisco'}",
            "title": "Testvalues"
          },
          "urlParams": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/UrlParam"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A list of URL parameters to be included in the API request. Example: {'city': 'San Francisco'}",
            "title": "Urlparams"
          }
        },
        "required": [
          "endpoint"
        ],
        "title": "ApiData",
        "type": "object"
      },
      "CliApiApplied": {
        "additionalProperties": true,
        "description": "The ``data`` of an ``apply`` response: the resource that the manifest created or updated.",
        "properties": {
          "apiVersion": {
            "description": "The manifest's api version, e.g. \"smarter.sh/v1\".",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "description": "The manifest's kind, e.g. Guardrail.",
            "title": "Kind",
            "type": "string"
          },
          "name": {
            "description": "The resource's name, the manifest's metadata.name.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "name"
        ],
        "title": "CliApiApplied",
        "type": "object"
      },
      "CliApiApplyResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiApplied"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of apply."
      },
      "CliApiErrorResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "$ref": "#/components/schemas/SAMJournalApiErrorResponse"
          }
        ],
        "description": "A journaled error response."
      },
      "CliApiGet": {
        "additionalProperties": true,
        "description": "The ``data`` of a ``get`` response: the resources of a kind that match the request's criteria.",
        "properties": {
          "apiVersion": {
            "description": "The api version, e.g. \"smarter.sh/v1\".",
            "title": "Apiversion",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/CliApiGetItems"
          },
          "kind": {
            "description": "The resources' kind, e.g. Guardrail.",
            "title": "Kind",
            "type": "string"
          },
          "kwargs": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The request's criteria, from its query parameters.",
            "title": "Kwargs",
            "type": "object"
          },
          "metadata": {
            "$ref": "#/components/schemas/CliApiGetMetadata"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name that the request asked for, if any.",
            "title": "Name"
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "kwargs",
          "data"
        ],
        "title": "CliApiGet",
        "type": "object"
      },
      "CliApiGetItems": {
        "additionalProperties": true,
        "description": "The table of a ``get`` response: its columns, and one row per resource.",
        "properties": {
          "items": {
            "description": "The resources, one object per resource, with one key per title.",
            "items": {
              "additionalProperties": {
                "$ref": "#/components/schemas/JsonValue"
              },
              "type": "object"
            },
            "title": "Items",
            "type": "array"
          },
          "titles": {
            "description": "The table's columns.",
            "items": {
              "$ref": "#/components/schemas/CliApiGetTitle"
            },
            "title": "Titles",
            "type": "array"
          }
        },
        "required": [
          "titles",
          "items"
        ],
        "title": "CliApiGetItems",
        "type": "object"
      },
      "CliApiGetMetadata": {
        "additionalProperties": true,
        "description": "The ``metadata`` of a ``get`` response's data.",
        "properties": {
          "count": {
            "description": "The number of resources that matched.",
            "minimum": 0,
            "title": "Count",
            "type": "integer"
          }
        },
        "required": [
          "count"
        ],
        "title": "CliApiGetMetadata",
        "type": "object"
      },
      "CliApiGetResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiGet"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of get."
      },
      "CliApiGetTitle": {
        "additionalProperties": true,
        "description": "A column of a ``get`` response's table: an item's field, and its serializer field's type.",
        "properties": {
          "name": {
            "description": "The field's name, e.g. createdAt.",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "description": "The serializer field's class, e.g. DateTimeField.",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "CliApiGetTitle",
        "type": "object"
      },
      "CliApiJsonSchemaResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/JsonSchema"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of json-schema."
      },
      "CliApiManifestResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/SAMManifest"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "A response whose data is a manifest: describe's and example-manifest's."
      },
      "CliApiMessageResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "message"
            ],
            "type": "object"
          }
        ],
        "description": "A response that has only a message, e.g. delete's."
      },
      "CliApiPrompt": {
        "additionalProperties": true,
        "description": "The ``data`` of a ``prompt`` response: the request that the cli api sent to the LLMClient, and its response.",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/CliApiPromptRequest"
          },
          "response": {
            "$ref": "#/components/schemas/CliApiPromptChatResponse"
          }
        },
        "required": [
          "request",
          "response"
        ],
        "title": "CliApiPrompt",
        "type": "object"
      },
      "CliApiPromptBody": {
        "additionalProperties": true,
        "description": "The request body of a ``prompt``.",
        "properties": {
          "messages": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiMessage"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The chat's earlier messages, to which the prompt is added. By default, a new chat.",
            "title": "Messages"
          },
          "prompt": {
            "description": "The user's message.",
            "title": "Prompt",
            "type": "string"
          },
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The chat session to continue. By default, the session that the uid used last.",
            "title": "Session Key"
          }
        },
        "required": [
          "prompt"
        ],
        "title": "CliApiPromptBody",
        "type": "object"
      },
      "CliApiPromptChatResponse": {
        "additionalProperties": true,
        "description": "The LLMClient's journaled response to a ``prompt``.",
        "properties": {
          "api": {
            "title": "Api",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/CliApiPromptLambdaResponse"
          },
          "metadata": {
            "$ref": "#/components/schemas/PromptChatApiJournalMetadata"
          }
        },
        "required": [
          "api",
          "metadata",
          "data"
        ],
        "title": "CliApiPromptChatResponse",
        "type": "object"
      },
      "CliApiPromptLambdaResponse": {
        "additionalProperties": true,
        "description": "The LLMClient's response to a ``prompt``: the version 1 prompt response, with its body decoded from a JSON string.",
        "properties": {
          "body": {
            "$ref": "#/components/schemas/PromptChatApiCompletionV1"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Headers",
            "type": "object"
          },
          "isBase64Encoded": {
            "default": false,
            "title": "Isbase64Encoded",
            "type": "boolean"
          },
          "statusCode": {
            "title": "Statuscode",
            "type": "integer"
          }
        },
        "required": [
          "statusCode",
          "body"
        ],
        "title": "CliApiPromptLambdaResponse",
        "type": "object"
      },
      "CliApiPromptRequest": {
        "additionalProperties": true,
        "description": "The request that a ``prompt`` sent to the LLMClient.",
        "properties": {
          "messages": {
            "items": {
              "$ref": "#/components/schemas/PromptChatApiMessage"
            },
            "title": "Messages",
            "type": "array"
          },
          "session_key": {
            "title": "Session Key",
            "type": "string"
          }
        },
        "required": [
          "session_key",
          "messages"
        ],
        "title": "CliApiPromptRequest",
        "type": "object"
      },
      "CliApiPromptResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiPrompt"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of prompt."
      },
      "CliApiResource": {
        "additionalProperties": true,
        "description": "A kind of resource that the cli api manages: an item of the ``resources`` response's data.",
        "properties": {
          "APIKind": {
            "description": "The kind, as it is written in a manifest and in the api's urls.",
            "title": "Apikind",
            "type": "string"
          },
          "Deployable": {
            "description": "Whether the kind's resources can be deployed and undeployed.",
            "title": "Deployable",
            "type": "boolean"
          },
          "Display": {
            "description": "The kind's singular display name.",
            "title": "Display",
            "type": "string"
          },
          "DisplayPlural": {
            "description": "The kind's plural display name.",
            "title": "Displayplural",
            "type": "string"
          },
          "Plural": {
            "description": "The kind's plural name, e.g. Guardrails.",
            "title": "Plural",
            "type": "string"
          },
          "Singular": {
            "description": "The kind's singular name, e.g. Guardrail.",
            "title": "Singular",
            "type": "string"
          }
        },
        "required": [
          "Singular",
          "Plural",
          "APIKind",
          "Display",
          "DisplayPlural",
          "Deployable"
        ],
        "title": "CliApiResource",
        "type": "object"
      },
      "CliApiResourcesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "items": {
                  "$ref": "#/components/schemas/CliApiResource"
                },
                "type": "array"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of resources."
      },
      "CliApiStatus": {
        "additionalProperties": true,
        "description": "The ``data`` of a ``status`` response: the platform's infrastructure and compute.",
        "properties": {
          "compute": {
            "$ref": "#/components/schemas/CliApiStatusCompute"
          },
          "infrastructures": {
            "$ref": "#/components/schemas/CliApiStatusInfrastructures"
          }
        },
        "required": [
          "infrastructures",
          "compute"
        ],
        "title": "CliApiStatus",
        "type": "object"
      },
      "CliApiStatusCompute": {
        "additionalProperties": true,
        "description": "The platform's compute, from Python's platform module.",
        "properties": {
          "machine": {
            "title": "Machine",
            "type": "string"
          },
          "platform": {
            "title": "Platform",
            "type": "string"
          },
          "processor": {
            "title": "Processor",
            "type": "string"
          },
          "release": {
            "title": "Release",
            "type": "string"
          },
          "system": {
            "title": "System",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "machine",
          "release",
          "platform",
          "processor",
          "system",
          "version"
        ],
        "title": "CliApiStatusCompute",
        "type": "object"
      },
      "CliApiStatusInfrastructures": {
        "additionalProperties": true,
        "description": "The infrastructure of a ``status`` response.",
        "properties": {
          "kubernetes": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The Kubernetes cluster, as the infrastructure provider describes it, e.g. its version and status, or an error if the provider is not ready. Its fields depend on the provider.",
            "title": "Kubernetes",
            "type": "object"
          },
          "redis": {
            "$ref": "#/components/schemas/CliApiStatusRedis"
          }
        },
        "required": [
          "kubernetes",
          "redis"
        ],
        "title": "CliApiStatusInfrastructures",
        "type": "object"
      },
      "CliApiStatusRedis": {
        "additionalProperties": true,
        "description": "The Redis server of a ``status`` response, from Redis's INFO command.",
        "properties": {
          "gcc_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Gcc Version"
          },
          "os": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Os"
          },
          "redis_build_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Redis Build Id"
          },
          "redis_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Redis Version"
          }
        },
        "title": "CliApiStatusRedis",
        "type": "object"
      },
      "CliApiStatusResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiStatus"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of status."
      },
      "CliApiValidateResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiValidation"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of validate."
      },
      "CliApiValidation": {
        "additionalProperties": true,
        "description": "The ``data`` of a ``validate`` response.",
        "properties": {
          "errors": {
            "description": "The manifest's errors. Empty when it is valid.",
            "items": {
              "$ref": "#/components/schemas/CliApiValidationError"
            },
            "title": "Errors",
            "type": "array"
          },
          "valid": {
            "description": "Whether the manifest is valid.",
            "title": "Valid",
            "type": "boolean"
          }
        },
        "required": [
          "valid",
          "errors"
        ],
        "title": "CliApiValidation",
        "type": "object"
      },
      "CliApiValidationError": {
        "additionalProperties": true,
        "description": "An error of a manifest that ``validate`` reports.",
        "properties": {
          "loc": {
            "description": "The path of the invalid value in the manifest, e.g. ['spec', 'config', 'severity']. Empty for an error that concerns the whole manifest.",
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Loc",
            "type": "array"
          },
          "message": {
            "description": "A human-readable description of the error.",
            "title": "Message",
            "type": "string"
          },
          "type": {
            "description": "The error's type, e.g. missing, or invalid_kind.",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "message",
          "type"
        ],
        "title": "CliApiValidationError",
        "type": "object"
      },
      "CliApiVersion": {
        "additionalProperties": true,
        "description": "The ``data`` of a ``version`` response.",
        "properties": {
          "api": {
            "$ref": "#/components/schemas/CliApiVersionApi"
          },
          "cli": {
            "$ref": "#/components/schemas/CliApiVersionCli"
          }
        },
        "required": [
          "api",
          "cli"
        ],
        "title": "CliApiVersion",
        "type": "object"
      },
      "CliApiVersionApi": {
        "additionalProperties": true,
        "description": "The platform's version, and the versions of its main Python packages.",
        "properties": {
          "python": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "description": "The version of Python, and of each of the platform's main packages, by name. Null if unknown.",
            "title": "Python",
            "type": "object"
          },
          "version": {
            "description": "The platform's version.",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version",
          "python"
        ],
        "title": "CliApiVersionApi",
        "type": "object"
      },
      "CliApiVersionCli": {
        "additionalProperties": true,
        "description": "The smarter cli's latest version.",
        "properties": {
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "title": "CliApiVersionCli",
        "type": "object"
      },
      "CliApiVersionResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiVersion"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of version."
      },
      "CliApiWhoami": {
        "additionalProperties": true,
        "description": "The ``data`` of a ``whoami`` response: the api key's user and account, and the platform's environment.",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/CliApiWhoamiAccount"
          },
          "environment": {
            "description": "The platform's environment, e.g. prod, or local.",
            "title": "Environment",
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/CliApiWhoamiUser"
          }
        },
        "required": [
          "user",
          "account",
          "environment"
        ],
        "title": "CliApiWhoami",
        "type": "object"
      },
      "CliApiWhoamiAccount": {
        "additionalProperties": true,
        "description": "The api key's account.",
        "properties": {
          "accountNumber": {
            "title": "Accountnumber",
            "type": "string"
          },
          "address1": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Address1"
          },
          "address2": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Address2"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "City"
          },
          "companyName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Companyname"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Country"
          },
          "createdAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Createdat"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Currency"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "hashedId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Hashedid"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "isActive": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Isactive"
          },
          "isDefaultAccount": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Isdefaultaccount"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Language"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "phoneNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Phonenumber"
          },
          "postalCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Postalcode"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "State"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Timezone"
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Updatedat"
          }
        },
        "required": [
          "id",
          "accountNumber"
        ],
        "title": "CliApiWhoamiAccount",
        "type": "object"
      },
      "CliApiWhoamiResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SAMJournalApiEnvelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CliApiWhoami"
              },
              "message": {
                "description": "A human-readable summary of the result.",
                "type": "string"
              }
            },
            "required": [
              "data"
            ],
            "type": "object"
          }
        ],
        "description": "The response of whoami."
      },
      "CliApiWhoamiUser": {
        "additionalProperties": true,
        "description": "The api key's user.",
        "properties": {
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Email"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Firstname"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "isStaff": {
            "title": "Isstaff",
            "type": "boolean"
          },
          "isSuperuser": {
            "title": "Issuperuser",
            "type": "boolean"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Lastname"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "id",
          "username",
          "isStaff",
          "isSuperuser"
        ],
        "title": "CliApiWhoamiUser",
        "type": "object"
      },
      "Connection": {
        "description": "Smarter API - generic SQL Connection class.",
        "properties": {
          "authenticationMethod": {
            "default": "none",
            "description": "The authentication method to use for the connection. Example: 'Standard TCP/IP', 'Standard TCP/IP over SSH', 'LDAP User/Password'.",
            "title": "Authenticationmethod",
            "type": "string"
          },
          "database": {
            "description": "The name of the database to connect to. Examples: 'sales' or 'mydb'.",
            "title": "Database",
            "type": "string"
          },
          "dbEngine": {
            "description": "A valid SQL database engine. Common db_engines: ['django.db.backends.postgresql', 'django.db.backends.mysql', 'django.db.backends.oracle', 'django.db.backends.sqlite3', 'django.db.backends.mssql', 'django.db.backends.sybase']",
            "title": "Dbengine",
            "type": "string"
          },
          "hostname": {
            "description": "The remote host of the SQL connection. Should be a valid internet domain name. Example: 'localhost' or 'mysql.mycompany.com'.",
            "title": "Hostname",
            "type": "string"
          },
          "maxOverflow": {
            "default": 10,
            "description": "The maximum number of connections to allow beyond the pool size.",
            "title": "Maxoverflow",
            "type": "integer"
          },
          "password": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The password.",
            "title": "Password"
          },
          "poolSize": {
            "default": 5,
            "description": "The size of the connection pool.",
            "title": "Poolsize",
            "type": "integer"
          },
          "port": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The port of the SQL connection. Default values are assigned based on the dbEngine.",
            "title": "Port"
          },
          "proxyHost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The remote host of the SQL proxy connection. Should be a valid internet domain name.",
            "title": "Proxyhost"
          },
          "proxyPassword": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The password for the proxy connection.",
            "title": "Proxypassword"
          },
          "proxyPort": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The port of the SQL proxy connection.",
            "title": "Proxyport"
          },
          "proxyUsername": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The username for the proxy connection.",
            "title": "Proxyusername"
          },
          "sshKnownHosts": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The known_hosts file content for verifying SSH connections.",
            "title": "Sshknownhosts"
          },
          "sslCa": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The Certificate Authority (CA) certificate for verifying the server.",
            "title": "Sslca"
          },
          "sslCert": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The SSL certificate for the connection, if required.",
            "title": "Sslcert"
          },
          "sslKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The SSL key for the connection, if required.",
            "title": "Sslkey"
          },
          "timeout": {
            "default": 30,
            "description": "The timeout for the database connection in seconds. Default is 30 seconds.",
            "title": "Timeout",
            "type": "integer"
          },
          "useSsl": {
            "default": false,
            "description": "Whether to use SSL/TLS for the connection.",
            "title": "Usessl",
            "type": "boolean"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The database username.",
            "title": "Username"
          }
        },
        "required": [
          "dbEngine",
          "hostname",
          "database"
        ],
        "title": "Connection",
        "type": "object"
      },
      "GuardrailApiEvaluateRequest": {
        "additionalProperties": false,
        "description": "The request body of a dry run of a Guardrail on a text.",
        "properties": {
          "stage": {
            "default": "input",
            "description": "Whether the text is the user's message (input) or the LLM's reply (output).",
            "enum": [
              "input",
              "output"
            ],
            "title": "Stage",
            "type": "string"
          },
          "text": {
            "description": "The text.",
            "maxLength": 20000,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "title": "GuardrailApiEvaluateRequest",
        "type": "object"
      },
      "GuardrailApiEvaluation": {
        "additionalProperties": false,
        "description": "The result of a dry run of a Guardrail on a text.\n\nIt records no events.",
        "properties": {
          "disposition": {
            "$ref": "#/components/schemas/PipelineDisposition",
            "description": "What would happen to the text."
          },
          "durationMs": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "How long the Guardrail took, in milliseconds.",
            "title": "Durationms"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The Guardrail's error, if it failed.",
            "title": "Error"
          },
          "findings": {
            "description": "What it found, if it triggered.",
            "items": {
              "$ref": "#/components/schemas/GuardrailApiFinding"
            },
            "title": "Findings",
            "type": "array"
          },
          "guardrail": {
            "description": "The Guardrail's name.",
            "title": "Guardrail",
            "type": "string"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The message that would replace a blocked text.",
            "title": "Message"
          },
          "stage": {
            "enum": [
              "input",
              "output"
            ],
            "title": "Stage",
            "type": "string"
          },
          "text": {
            "description": "The text after the Guardrail's action, e.g. redacted.",
            "title": "Text",
            "type": "string"
          },
          "triggered": {
            "description": "Whether the Guardrail triggered.",
            "title": "Triggered",
            "type": "boolean"
          }
        },
        "required": [
          "guardrail",
          "stage",
          "triggered",
          "disposition",
          "text",
          "findings"
        ],
        "title": "GuardrailApiEvaluation",
        "type": "object"
      },
      "GuardrailApiEvent": {
        "additionalProperties": false,
        "description": "A Guardrail's event: a :class:`smarter.apps.guardrail.models.GuardrailEvent`, a record of what it did to a prompt.\n\nIts keys are snake_case: the serializer that the api used was not camelCase.",
        "properties": {
          "action": {
            "enum": [
              "log",
              "flag",
              "redact",
              "transform",
              "block",
              "escalate"
            ],
            "title": "Action",
            "type": "string"
          },
          "category": {
            "enum": [
              "pii",
              "secrets",
              "prompt_injection",
              "jailbreak",
              "toxicity",
              "self_harm",
              "hallucination",
              "off_topic",
              "compliance",
              "formatting",
              "custom"
            ],
            "title": "Category",
            "type": "string"
          },
          "confidence": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The strategy's confidence.",
            "title": "Confidence"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the Guardrail triggered.",
            "title": "Created At"
          },
          "disposition": {
            "description": "What the Guardrail did.",
            "enum": [
              "logged",
              "flagged",
              "redacted",
              "transformed",
              "blocked",
              "escalated",
              "monitored",
              "error"
            ],
            "title": "Disposition",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The Guardrail's error, if it failed.",
            "title": "Error"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "An excerpt of what matched, masked.",
            "title": "Excerpt"
          },
          "guardrail": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The Guardrail's id, or null if it was deleted.",
            "title": "Guardrail"
          },
          "guardrail_name": {
            "description": "The Guardrail's name, kept if it is deleted.",
            "title": "Guardrail Name",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "llmclient": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of the LLMClient whose prompt triggered it.",
            "title": "Llmclient"
          },
          "mode": {
            "enum": [
              "enforce",
              "monitor"
            ],
            "title": "Mode",
            "type": "string"
          },
          "rationale": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Why it triggered, for a person.",
            "title": "Rationale"
          },
          "reviewed": {
            "description": "Whether a person has reviewed the event.",
            "title": "Reviewed",
            "type": "boolean"
          },
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The chat session.",
            "title": "Session Key"
          },
          "severity": {
            "minimum": 0,
            "title": "Severity",
            "type": "integer"
          },
          "stage": {
            "description": "Where it triggered: the user's message, or the LLM's reply.",
            "enum": [
              "input",
              "output",
              "both"
            ],
            "title": "Stage",
            "type": "string"
          },
          "strategy": {
            "enum": [
              "regex",
              "keyword",
              "detector",
              "semantic",
              "moderation",
              "llm_judge"
            ],
            "title": "Strategy",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "guardrail_name",
          "stage",
          "category",
          "strategy",
          "action",
          "mode",
          "disposition",
          "severity",
          "reviewed"
        ],
        "title": "GuardrailApiEvent",
        "type": "object"
      },
      "GuardrailApiEvents": {
        "additionalProperties": false,
        "description": "The response of a Guardrail's events: its name, and its latest events, newest first.",
        "properties": {
          "events": {
            "items": {
              "$ref": "#/components/schemas/GuardrailApiEvent"
            },
            "title": "Events",
            "type": "array"
          },
          "guardrail": {
            "description": "The Guardrail's name.",
            "title": "Guardrail",
            "type": "string"
          }
        },
        "required": [
          "guardrail",
          "events"
        ],
        "title": "GuardrailApiEvents",
        "type": "object"
      },
      "GuardrailApiFinding": {
        "additionalProperties": false,
        "description": "What a Guardrail found in a text.",
        "properties": {
          "confidence": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The strategy's confidence.",
            "title": "Confidence"
          },
          "matches": {
            "description": "Where the text matched.",
            "items": {
              "$ref": "#/components/schemas/GuardrailMatch"
            },
            "title": "Matches",
            "type": "array"
          },
          "rationale": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Why it triggered, for a person.",
            "title": "Rationale"
          }
        },
        "required": [
          "matches"
        ],
        "title": "GuardrailApiFinding",
        "type": "object"
      },
      "GuardrailApiGuardrail": {
        "additionalProperties": false,
        "description": "A Guardrail: a :class:`smarter.apps.guardrail.models.Guardrail`.",
        "properties": {
          "action": {
            "description": "What the Guardrail does when it triggers.",
            "enum": [
              "log",
              "flag",
              "redact",
              "transform",
              "block",
              "escalate"
            ],
            "title": "Action",
            "type": "string"
          },
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the Guardrail now: they own it, and no LLMClient uses it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "category": {
            "description": "What the Guardrail protects against.",
            "enum": [
              "pii",
              "secrets",
              "prompt_injection",
              "jailbreak",
              "toxicity",
              "self_harm",
              "hallucination",
              "off_topic",
              "compliance",
              "formatting",
              "custom"
            ],
            "title": "Category",
            "type": "string"
          },
          "config": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The strategy's configuration.",
            "title": "Config"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "failClosed": {
            "description": "Whether an error of the Guardrail blocks the text.",
            "title": "Failclosed",
            "type": "boolean"
          },
          "hashedId": {
            "description": "The Guardrail's hashed id, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isActive": {
            "description": "Whether the Guardrail runs.",
            "title": "Isactive",
            "type": "boolean"
          },
          "manifestUrl": {
            "description": "The url of the Guardrail's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The message that replaces a blocked text.",
            "title": "Message"
          },
          "mode": {
            "description": "enforce acts. monitor only records what it would do.",
            "enum": [
              "enforce",
              "monitor"
            ],
            "title": "Mode",
            "type": "string"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "pattern": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The regular expression of the regex strategy.",
            "title": "Pattern"
          },
          "priority": {
            "description": "The order of the Guardrails. Lower runs first.",
            "minimum": 0,
            "title": "Priority",
            "type": "integer"
          },
          "ready": {
            "description": "Whether the Guardrail is configured completely.",
            "title": "Ready",
            "type": "boolean"
          },
          "replacement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The replacement of the redact action.",
            "title": "Replacement"
          },
          "rfc1034CompliantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name, as a DNS label.",
            "title": "Rfc1034Compliantname"
          },
          "severity": {
            "description": "The severity of what the Guardrail detects, from 1 to 5.",
            "minimum": 0,
            "title": "Severity",
            "type": "integer"
          },
          "stage": {
            "description": "What the Guardrail checks: the user's message, the LLM's reply, or both.",
            "enum": [
              "input",
              "output",
              "both"
            ],
            "title": "Stage",
            "type": "string"
          },
          "strategy": {
            "description": "How the Guardrail detects it.",
            "enum": [
              "regex",
              "keyword",
              "detector",
              "semantic",
              "moderation",
              "llm_judge"
            ],
            "title": "Strategy",
            "type": "string"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The confidence at which a scoring strategy triggers.",
            "title": "Threshold"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The Guardrail's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "manifestUrl",
          "ready",
          "stage",
          "category",
          "strategy",
          "action",
          "severity",
          "mode",
          "failClosed",
          "priority",
          "isActive"
        ],
        "title": "GuardrailApiGuardrail",
        "type": "object"
      },
      "GuardrailMatch": {
        "description": "One match of a guardrail within a text segment.\n\n:ivar start: The index of the match's first character in the segment's text.\n:vartype start: int\n:ivar end: The index after the match's last character.\n:vartype end: int\n:ivar text: The matched text.\n:vartype text: str\n:ivar label: What matched, e.g. the detector ``credit_card``, or the keyword.\n:vartype label: str or None",
        "properties": {
          "end": {
            "title": "End",
            "type": "integer"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Label"
          },
          "start": {
            "title": "Start",
            "type": "integer"
          },
          "text": {
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end",
          "text"
        ],
        "title": "GuardrailMatch",
        "type": "object"
      },
      "HarnessRole": {
        "description": "Role an LLMClient (Harness) plays within an Orchestrator.\n\nValues must stay aligned with\nsmarter.apps.orchestrator.models.OrchestratorHarness.Role.",
        "enum": [
          "planner",
          "executor",
          "critic",
          "router",
          "summarizer",
          "tool_caller"
        ],
        "title": "HarnessRole",
        "type": "string"
      },
      "ImageSearchData": {
        "description": "Smarter API - ImageSearchPlugin.spec.imageSearchData.",
        "properties": {
          "apiKey": {
            "default": "brave_search_api_key",
            "description": "ImageSearchPlugin.spec.apiKey[str]: the name of the Smarter Secret that contains a Brave Search API key. The api key itself is never included in the manifest.",
            "title": "Apikey",
            "type": "string"
          },
          "cacheTtl": {
            "default": 604800,
            "description": "ImageSearchPlugin.spec.cacheTtl[int]: seconds to cache search results. 0 disables caching.",
            "maximum": 604800,
            "minimum": 0,
            "title": "Cachettl",
            "type": "integer"
          },
          "filters": {
            "$ref": "#/components/schemas/ImageSearchFilters",
            "description": "ImageSearchPlugin.spec.filters[obj]: the filters that Smarter applies to the search results."
          },
          "llmSearchParams": {
            "default": false,
            "description": "ImageSearchPlugin.spec.llmSearchParams[bool]: whether the LLM may set every Brave Image Search API parameter in each tool call: count (up to 20), country, search_lang, safesearch and spellcheck. searchParams are then the defaults. If false, the LLM may only lower the count.",
            "title": "Llmsearchparams",
            "type": "boolean"
          },
          "queryTerms": {
            "anyOf": [
              {
                "maxLength": 400,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.queryTerms[str]: optional search terms appended to every query that the LLM sends, e.g. 'black and white photograph'. The LLM always supplies the query itself, e.g. 'formula 1 race cars', so that Brave searches for 'formula 1 race cars black and white photograph'.",
            "title": "Queryterms"
          },
          "searchParams": {
            "$ref": "#/components/schemas/ImageSearchParams",
            "description": "ImageSearchPlugin.spec.searchParams[obj]: the Brave Image Search API query parameters."
          },
          "timeout": {
            "default": 10,
            "description": "ImageSearchPlugin.spec.timeout[int]: seconds to wait for each web request, 1 to 60.",
            "maximum": 60,
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          },
          "validateUrls": {
            "default": true,
            "description": "ImageSearchPlugin.spec.validateUrls[bool]: only return image urls that respond to a request with HTTP 200, and not with a web page. Urls are always https.",
            "title": "Validateurls",
            "type": "boolean"
          }
        },
        "title": "ImageSearchData",
        "type": "object"
      },
      "ImageSearchFilters": {
        "description": "Smarter API - ImageSearchPlugin.spec.imageSearchData.filters.\n\nSmarter applies these to the Brave Image Search API's results.",
        "properties": {
          "allowedDomains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.filters.allowedDomains[list]: if not empty, only images from web pages on these domains, and their subdomains.",
            "title": "Alloweddomains"
          },
          "blockedDomains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.filters.blockedDomains[list]: never images on these domains, nor from web pages on them, including their subdomains.",
            "title": "Blockeddomains"
          },
          "fileType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.filters.fileType[str]: only images of these file types, separated by '|', e.g. jpg|png. Any of: ['jpg', 'png', 'gif', 'svg', 'webp', 'avif', 'bmp', 'ico']",
            "title": "Filetype"
          },
          "minHeight": {
            "anyOf": [
              {
                "maximum": 10000,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.filters.minHeight[int]: only images at least this many pixels high. Images whose height Brave does not report are skipped.",
            "title": "Minheight"
          },
          "minWidth": {
            "anyOf": [
              {
                "maximum": 10000,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.filters.minWidth[int]: only images at least this many pixels wide. Images whose width Brave does not report are skipped.",
            "title": "Minwidth"
          }
        },
        "title": "ImageSearchFilters",
        "type": "object"
      },
      "ImageSearchParams": {
        "description": "Smarter API - ImageSearchPlugin.spec.imageSearchData.searchParams.\n\nThese map 1:1 to the query parameters of the Brave Image Search API, except for ``q``, the\nquery itself, which the LLM supplies. See ``imageSearchData.queryTerms``.",
        "properties": {
          "count": {
            "default": 10,
            "description": "ImageSearchPlugin.spec.searchParams.count[int]: the maximum number of images per search, 1 to 20.",
            "maximum": 20,
            "minimum": 1,
            "title": "Count",
            "type": "integer"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.searchParams.country[str]: a two letter country code, e.g. us, or all for worldwide results.",
            "title": "Country"
          },
          "safesearch": {
            "default": "strict",
            "description": "ImageSearchPlugin.spec.searchParams.safesearch[str]: adult content filtering. One of: ['off', 'strict']",
            "enum": [
              "off",
              "strict"
            ],
            "title": "Safesearch",
            "type": "string"
          },
          "searchLang": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "ImageSearchPlugin.spec.searchParams.searchLang[str]: prefer images from content in this language, e.g. en or pt-br.",
            "title": "Searchlang"
          },
          "spellcheck": {
            "default": true,
            "description": "ImageSearchPlugin.spec.searchParams.spellcheck[bool]: whether Brave may correct the spelling of the query.",
            "title": "Spellcheck",
            "type": "boolean"
          }
        },
        "title": "ImageSearchParams",
        "type": "object"
      },
      "JsonSchema": {
        "additionalProperties": true,
        "description": "A JSON Schema (https://json-schema.org/draft/2020-12/schema).",
        "type": "object"
      },
      "JsonValue": {},
      "LLMClientApiCustomDomain": {
        "additionalProperties": false,
        "description": "A custom domain of an LLMClient: a :class:`smarter.apps.llmclient.models.LLMClientCustomDomain`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "awsHostedZoneId": {
            "description": "The id of the domain's DNS zone, empty until it has one.",
            "title": "Awshostedzoneid",
            "type": "string"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "domainName": {
            "description": "The domain, e.g. example.com.",
            "title": "Domainname",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "description": "The custom domain's owner: the UserProfile's id.",
            "title": "Userprofile",
            "type": "integer"
          },
          "verificationMessage": {
            "description": "The result of the last verification, for a person.",
            "title": "Verificationmessage",
            "type": "string"
          },
          "verificationStatus": {
            "description": "Whether the platform has verified that it controls the domain's DNS.",
            "enum": [
              "Not Verified",
              "Verifying",
              "Verified",
              "Failed"
            ],
            "title": "Verificationstatus",
            "type": "string"
          },
          "verifiedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the domain was verified.",
            "title": "Verifiedat"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "userProfile",
          "awsHostedZoneId",
          "domainName",
          "verificationStatus",
          "verificationMessage"
        ],
        "title": "LLMClientApiCustomDomain",
        "type": "object"
      },
      "LLMClientApiExtension": {
        "additionalProperties": false,
        "description": "An extension of an LLMClient: a :class:`smarter.apps.llmclient.models.LLMClientExtensions`.",
        "properties": {
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "extension": {
            "description": "LLMClientExtensions.extension: the Extension's id.",
            "title": "Extension",
            "type": "integer"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "llmclient": {
            "description": "LLMClientExtensions.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "name": {
            "description": "The extension's slug, e.g. weather.",
            "title": "Name",
            "type": "string"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          }
        },
        "required": [
          "id",
          "name",
          "extension",
          "llmclient"
        ],
        "title": "LLMClientApiExtension",
        "type": "object"
      },
      "LLMClientApiGuardrailRef": {
        "additionalProperties": false,
        "description": "A Guardrail of an LLMClient, in the LLMClient's own response: the LLMClientGuardrails' id, and the Guardrail's name.",
        "properties": {
          "id": {
            "description": "LLMClientGuardrails.id.",
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "description": "The Guardrail's name, Guardrail.name.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "LLMClientApiGuardrailRef",
        "type": "object"
      },
      "LLMClientApiKey": {
        "additionalProperties": false,
        "description": "An api key of an LLMClient: a :class:`smarter.apps.llmclient.models.LLMClientAPIKey`.",
        "properties": {
          "apiKey": {
            "description": "LLMClientAPIKey.api_key: the SmarterAuthToken's public key_id. Never the key, nor its digest.",
            "format": "uuid",
            "title": "Apikey",
            "type": "string"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "llmclient": {
            "description": "LLMClientAPIKey.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          }
        },
        "required": [
          "id",
          "llmclient",
          "apiKey"
        ],
        "title": "LLMClientApiKey",
        "type": "object"
      },
      "LLMClientApiLLMClient": {
        "additionalProperties": false,
        "description": "An LLMClient: a :class:`smarter.apps.llmclient.models.LLMClient`, with its related rows and its urls.\n\nIts ``extensions``, ``plugins``, ``custom_domains`` and ``api_keys`` are inline, and its urls and\nhosts are computed, as the LLMClient's properties compute them for the platform that serves the\nrequest.",
        "properties": {
          "allowedOrigins": {
            "description": "LLMClient.allowed_origins: the CORS origins of its pages.",
            "items": {
              "type": "string"
            },
            "title": "Allowedorigins",
            "type": "array"
          },
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "apiKeys": {
            "description": "The LLMClient's api keys.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiKey"
            },
            "title": "Apikeys",
            "type": "array"
          },
          "appAssistant": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_assistant: the assistant's name.",
            "title": "Appassistant"
          },
          "appExamplePrompts": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_example_prompts.",
            "title": "Appexampleprompts"
          },
          "appFileAttachment": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_file_attachment.",
            "title": "Appfileattachment"
          },
          "appInfoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_info_url.",
            "title": "Appinfourl"
          },
          "appName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_name.",
            "title": "Appname"
          },
          "appPlaceholder": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_placeholder.",
            "title": "Appplaceholder"
          },
          "appWelcomeMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.app_welcome_message.",
            "title": "Appwelcomemessage"
          },
          "baseApiDomain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The platform's api domain, e.g. api.example.com.",
            "title": "Baseapidomain"
          },
          "baseDefaultHost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The account's host under the api domain.",
            "title": "Basedefaulthost"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the LLMClient now: they own it, and nothing depends on it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "customDomain": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.custom_domain: the custom domain's id, if any.",
            "title": "Customdomain"
          },
          "customDomains": {
            "description": "The LLMClient's custom domain, as a list of none or one.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiCustomDomain"
            },
            "title": "Customdomains",
            "type": "array"
          },
          "customHost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLMClient's host on its custom domain, if any.",
            "title": "Customhost"
          },
          "customUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLMClient's url on its custom domain, if any.",
            "title": "Customurl"
          },
          "defaultHost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLMClient's host, once deployed.",
            "title": "Defaulthost"
          },
          "defaultMaxTokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.default_max_tokens.",
            "title": "Defaultmaxtokens"
          },
          "defaultModel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.default_model.",
            "title": "Defaultmodel"
          },
          "defaultSystemRole": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The system prompt of a new chat session, with the current date and time.",
            "title": "Defaultsystemrole"
          },
          "defaultTemperature": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.default_temperature.",
            "title": "Defaulttemperature"
          },
          "defaultUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLMClient's url, once deployed.",
            "title": "Defaulturl"
          },
          "deployed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.deployed: whether it is served on its own host.",
            "title": "Deployed"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "dnsVerificationStatus": {
            "anyOf": [
              {
                "enum": [
                  "Verifying",
                  "Not Verified",
                  "Verified",
                  "Failed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.dns_verification_status.",
            "title": "Dnsverificationstatus"
          },
          "extensions": {
            "description": "The LLMClient's extensions.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiExtension"
            },
            "title": "Extensions",
            "type": "array"
          },
          "guardrails": {
            "description": "The LLMClient's guardrails.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiGuardrailRef"
            },
            "title": "Guardrails",
            "type": "array"
          },
          "hashedId": {
            "description": "The LLMClient's hashed id, e.g. rMTAwMDAwNgx, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "hostname": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The host that serves the LLMClient now.",
            "title": "Hostname"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isAuthenticationRequired": {
            "description": "Whether prompting the LLMClient requires an api key.",
            "title": "Isauthenticationrequired",
            "type": "boolean"
          },
          "manifestUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url of the LLMClient's manifest in the web console.",
            "title": "Manifesturl"
          },
          "mcpclients": {
            "description": "The LLMClient's MCPClients.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiMCPClientRef"
            },
            "title": "Mcpclients",
            "type": "array"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "plugins": {
            "description": "The LLMClient's plugins.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiPluginRef"
            },
            "title": "Plugins",
            "type": "array"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.provider: the LLM provider, e.g. openai.",
            "title": "Provider"
          },
          "ready": {
            "description": "Whether the LLMClient can be prompted.",
            "title": "Ready",
            "type": "boolean"
          },
          "rfc1034CompliantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name, as a DNS label.",
            "title": "Rfc1034Compliantname"
          },
          "sandboxHost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The platform's host, which serves undeployed LLMClients.",
            "title": "Sandboxhost"
          },
          "sandboxUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLMClient's page in the web console's workbench.",
            "title": "Sandboxurl"
          },
          "styles": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles: the chat's CSS styles.",
            "title": "Styles"
          },
          "subdomain": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.subdomain: the Route53 record's id, if any.",
            "title": "Subdomain"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "tlsCertificateIssuanceStatus": {
            "anyOf": [
              {
                "enum": [
                  "No Certificate",
                  "Requested",
                  "Issued",
                  "Failed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.tls_certificate_issuance_status.",
            "title": "Tlscertificateissuancestatus"
          },
          "tools": {
            "description": "Everything that the LLMClient adds to a prompt: its extensions, plugins, MCPClients and guardrails, in that order.",
            "items": {
              "$ref": "#/components/schemas/LLMClientApiTool"
            },
            "title": "Tools",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url that serves the LLMClient now.",
            "title": "Url"
          },
          "urlChatConfig": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The chat api's configuration url.",
            "title": "Urlchatconfig"
          },
          "urlChatapp": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLMClient's chat page.",
            "title": "Urlchatapp"
          },
          "urlLlmclient": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Where to send prompts: the chat api's prompt url.",
            "title": "Urlllmclient"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The LLMClient's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "extensions",
          "plugins",
          "mcpclients",
          "guardrails",
          "tools",
          "customDomains",
          "apiKeys",
          "ready",
          "isAuthenticationRequired",
          "allowedOrigins"
        ],
        "title": "LLMClientApiLLMClient",
        "type": "object"
      },
      "LLMClientApiMCPClientRef": {
        "additionalProperties": false,
        "description": "An MCPClient of an LLMClient, in the LLMClient's own response: the LLMClientMCPClients' id, and the MCPClient's name.",
        "properties": {
          "id": {
            "description": "LLMClientMCPClients.id.",
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "description": "The MCPClient's name, MCPClient.name.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "LLMClientApiMCPClientRef",
        "type": "object"
      },
      "LLMClientApiPlugin": {
        "additionalProperties": false,
        "description": "A plugin of an LLMClient: a :class:`smarter.apps.llmclient.models.LLMClientPlugin`, with the plugin's metadata.",
        "properties": {
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "llmclient": {
            "description": "LLMClientPlugin.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "pluginMeta": {
            "$ref": "#/components/schemas/PluginApiPluginMeta",
            "description": "LLMClientPlugin.plugin_meta: the plugin."
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          }
        },
        "required": [
          "id",
          "pluginMeta",
          "llmclient"
        ],
        "title": "LLMClientApiPlugin",
        "type": "object"
      },
      "LLMClientApiPluginRef": {
        "additionalProperties": false,
        "description": "A plugin of an LLMClient, in the LLMClient's own response: the LLMClientPlugin's id, and the plugin's name.",
        "properties": {
          "id": {
            "description": "LLMClientPlugin.id.",
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "description": "The plugin's name, PluginMeta.name.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "LLMClientApiPluginRef",
        "type": "object"
      },
      "LLMClientApiTool": {
        "additionalProperties": false,
        "description": "Something that an LLMClient adds to a prompt: an extension, plugin, MCPClient or guardrail.",
        "properties": {
          "id": {
            "description": "The link row's id: LLMClientExtensions, LLMClientPlugin, ... .id.",
            "title": "Id",
            "type": "integer"
          },
          "kind": {
            "description": "Extension, or the linked resource's manifest kind.",
            "enum": [
              "Extension",
              "Plugin",
              "MCPClient",
              "Guardrail"
            ],
            "title": "Kind",
            "type": "string"
          },
          "name": {
            "description": "The extension's slug, or the linked resource's name.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "kind"
        ],
        "title": "LLMClientApiTool",
        "type": "object"
      },
      "LLMClientPromptErrorResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PromptChatApiPromptResponse"
          },
          {
            "$ref": "#/components/schemas/PromptChatApiErrorResponse"
          }
        ],
        "description": "A failed prompt: the prompt's response with its error, whose http status is the LLM provider's, or, for an error before the prompt runs, e.g. an LLMClient that does not exist, the chat api's error response."
      },
      "LLMHostApiCatalogModel": {
        "additionalProperties": false,
        "description": "A model, as a catalog, e.g. Hugging Face, describes it.\n\nIts keys are snake_case, e.g. ``parameter_count``, as the api returned them before it was modeled.",
        "properties": {
          "architecture": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Architecture"
          },
          "catalog": {
            "description": "The catalog, e.g. huggingface or builtin.",
            "title": "Catalog",
            "type": "string"
          },
          "context_window": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Context Window"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "downloads": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Downloads"
          },
          "files": {
            "items": {
              "type": "string"
            },
            "title": "Files",
            "type": "array"
          },
          "gated": {
            "default": false,
            "description": "Whether downloading it needs an accepted license and a token.",
            "title": "Gated",
            "type": "boolean"
          },
          "license": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "License"
          },
          "likes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Likes"
          },
          "manifest": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A ready-made manifest, for built-in models.",
            "title": "Manifest"
          },
          "parameter_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Parameter Count"
          },
          "quantization": {
            "default": "none",
            "title": "Quantization",
            "type": "string"
          },
          "repository": {
            "description": "The model, e.g. meta-llama/Llama-3.1-8B-Instruct.",
            "title": "Repository",
            "type": "string"
          },
          "source": {
            "description": "Where its weights come from.",
            "title": "Source",
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "task": {
            "title": "Task",
            "type": "string"
          }
        },
        "required": [
          "catalog",
          "source",
          "repository",
          "task"
        ],
        "title": "LLMHostApiCatalogModel",
        "type": "object"
      },
      "LLMHostApiDiscovery": {
        "additionalProperties": false,
        "description": "The models of a catalog that match a search, most popular first.",
        "properties": {
          "models": {
            "items": {
              "$ref": "#/components/schemas/LLMHostApiCatalogModel"
            },
            "title": "Models",
            "type": "array"
          }
        },
        "required": [
          "models"
        ],
        "title": "LLMHostApiDiscovery",
        "type": "object"
      },
      "LLMHostApiDraftManifest": {
        "additionalProperties": false,
        "description": "A draft LLMHost manifest for a model, to review and apply.",
        "properties": {
          "manifest": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The draft manifest. See SAMLLMHost.",
            "title": "Manifest",
            "type": "object"
          }
        },
        "required": [
          "manifest"
        ],
        "title": "LLMHostApiDraftManifest",
        "type": "object"
      },
      "LLMHostApiLLMHost": {
        "additionalProperties": false,
        "description": "A self-hosted LLM: a :class:`smarter.apps.llmhost.models.LLMHost`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "apiFormat": {
            "description": "The format of the inference server's api.",
            "enum": [
              "openai_compatible",
              "huggingface",
              "ollama_native",
              "custom"
            ],
            "title": "Apiformat",
            "type": "string"
          },
          "apiKeySecret": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The id of the Secret of its api key, if any.",
            "title": "Apikeysecret"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the LLMHost now.",
            "title": "Candelete",
            "type": "boolean"
          },
          "compute": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The id of its LLMHostCompute, if any.",
            "title": "Compute"
          },
          "contextWindow": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The model's context window, in tokens.",
            "title": "Contextwindow"
          },
          "costPerHour": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The cost of a replica, per hour, in USD, as a decimal string.",
            "title": "Costperhour"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "deployedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Deployedat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "embeddingDimensions": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "An embedding model's dimensions.",
            "title": "Embeddingdimensions"
          },
          "endpointUrl": {
            "description": "The base url of its api inside the cluster.",
            "title": "Endpointurl",
            "type": "string"
          },
          "gpuCount": {
            "description": "GPUs per replica.",
            "minimum": 0,
            "title": "Gpucount",
            "type": "integer"
          },
          "gpuType": {
            "description": "The GPU, e.g. nvidia-l4.",
            "title": "Gputype",
            "type": "string"
          },
          "hashedId": {
            "description": "The LLMHost's hashed id, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "healthCheckUrl": {
            "description": "The url of its health check.",
            "title": "Healthcheckurl",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "inferenceEngine": {
            "description": "The inference server.",
            "enum": [
              "vllm",
              "tgi",
              "sglang",
              "llama_cpp",
              "ollama",
              "tei",
              "custom"
            ],
            "title": "Inferenceengine",
            "type": "string"
          },
          "isActive": {
            "description": "Whether LLMClients may use it.",
            "title": "Isactive",
            "type": "boolean"
          },
          "lastHealthCheckAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Lasthealthcheckat"
          },
          "lastHealthOk": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Lasthealthok"
          },
          "license": {
            "description": "The model's license.",
            "title": "License",
            "type": "string"
          },
          "manifestUrl": {
            "description": "The url of the LLMHost's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "modelArchitecture": {
            "description": "The model's architecture.",
            "title": "Modelarchitecture",
            "type": "string"
          },
          "modelRepository": {
            "description": "The model, e.g. meta-llama/Llama-3.1-8B-Instruct.",
            "title": "Modelrepository",
            "type": "string"
          },
          "modelRevision": {
            "description": "The model's revision, e.g. main.",
            "title": "Modelrevision",
            "type": "string"
          },
          "modelSource": {
            "description": "Where the model's weights come from.",
            "enum": [
              "huggingface",
              "ollama",
              "s3",
              "url",
              "pvc"
            ],
            "title": "Modelsource",
            "type": "string"
          },
          "modelTask": {
            "description": "What the model does.",
            "enum": [
              "text-generation",
              "embedding"
            ],
            "title": "Modeltask",
            "type": "string"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "parameterCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The model's number of parameters.",
            "title": "Parametercount"
          },
          "publicUrl": {
            "description": "The base url of its Ingress, if any.",
            "title": "Publicurl",
            "type": "string"
          },
          "quantization": {
            "description": "The weights' quantization.",
            "enum": [
              "none",
              "fp32",
              "fp16",
              "bf16",
              "fp8",
              "mxfp4",
              "int8",
              "int4",
              "gguf",
              "awq",
              "gptq"
            ],
            "title": "Quantization",
            "type": "string"
          },
          "readyReplicas": {
            "description": "The ready replicas, as of the last check.",
            "minimum": 0,
            "title": "Readyreplicas",
            "type": "integer"
          },
          "replicas": {
            "description": "The desired replicas.",
            "minimum": 0,
            "title": "Replicas",
            "type": "integer"
          },
          "servedModelName": {
            "description": "The model's name in its api's requests.",
            "title": "Servedmodelname",
            "type": "string"
          },
          "spec": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The manifest's spec, as it was applied. See SAMLLMHost.",
            "title": "Spec",
            "type": "object"
          },
          "status": {
            "description": "Its deployment's status.",
            "enum": [
              "provisioning",
              "pending",
              "downloading",
              "deploying",
              "active",
              "degraded",
              "inactive",
              "error"
            ],
            "title": "Status",
            "type": "string"
          },
          "statusMessage": {
            "description": "Its status, for a person.",
            "title": "Statusmessage",
            "type": "string"
          },
          "supportsFunctionCalling": {
            "title": "Supportsfunctioncalling",
            "type": "boolean"
          },
          "supportsReasoning": {
            "title": "Supportsreasoning",
            "type": "boolean"
          },
          "supportsStreaming": {
            "title": "Supportsstreaming",
            "type": "boolean"
          },
          "supportsVision": {
            "title": "Supportsvision",
            "type": "boolean"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The LLMHost's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          },
          "vramRequiredGb": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The VRAM that the model needs.",
            "title": "Vramrequiredgb"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "manifestUrl",
          "spec",
          "modelSource",
          "modelRepository",
          "modelRevision",
          "modelTask",
          "servedModelName",
          "license",
          "modelArchitecture",
          "quantization",
          "supportsStreaming",
          "supportsFunctionCalling",
          "supportsVision",
          "supportsReasoning",
          "inferenceEngine",
          "apiFormat",
          "gpuType",
          "gpuCount",
          "replicas",
          "status",
          "statusMessage",
          "isActive",
          "readyReplicas",
          "endpointUrl",
          "publicUrl",
          "healthCheckUrl"
        ],
        "title": "LLMHostApiLLMHost",
        "type": "object"
      },
      "LLMHostApiLogs": {
        "additionalProperties": false,
        "description": "The inference server's recent logs.",
        "properties": {
          "llmhost": {
            "description": "The LLMHost's name.",
            "title": "Llmhost",
            "type": "string"
          },
          "logs": {
            "title": "Logs",
            "type": "string"
          }
        },
        "required": [
          "llmhost",
          "logs"
        ],
        "title": "LLMHostApiLogs",
        "type": "object"
      },
      "LLMHostApiPlan": {
        "additionalProperties": false,
        "description": "The Kubernetes resources that a deployment would apply, with secrets redacted.",
        "properties": {
          "llmhost": {
            "description": "The LLMHost's name.",
            "title": "Llmhost",
            "type": "string"
          },
          "resources": {
            "description": "Kubernetes manifests.",
            "items": {
              "additionalProperties": {
                "$ref": "#/components/schemas/JsonValue"
              },
              "type": "object"
            },
            "title": "Resources",
            "type": "array"
          }
        },
        "required": [
          "llmhost",
          "resources"
        ],
        "title": "LLMHostApiPlan",
        "type": "object"
      },
      "LLMHostApiPod": {
        "additionalProperties": false,
        "description": "A pod of an LLMHost: its name, phase, readiness, restarts, and why it is not ready, if it isn't.",
        "properties": {
          "downloading": {
            "description": "Whether it is downloading the model's weights.",
            "title": "Downloading",
            "type": "boolean"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "phase": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "e.g. Running.",
            "title": "Phase"
          },
          "ready": {
            "title": "Ready",
            "type": "boolean"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Why it is not ready.",
            "title": "Reason"
          },
          "restarts": {
            "minimum": 0,
            "title": "Restarts",
            "type": "integer"
          }
        },
        "required": [
          "ready",
          "restarts",
          "downloading"
        ],
        "title": "LLMHostApiPod",
        "type": "object"
      },
      "LLMHostApiReport": {
        "additionalProperties": false,
        "description": "A summary of LLMHosts: their count by status and engine, the GPUs they use, and their cost.",
        "properties": {
          "byEngine": {
            "additionalProperties": {
              "type": "integer"
            },
            "description": "The number of LLMHosts of each inference engine.",
            "title": "Byengine",
            "type": "object"
          },
          "byStatus": {
            "additionalProperties": {
              "type": "integer"
            },
            "description": "The number of LLMHosts of each status.",
            "title": "Bystatus",
            "type": "object"
          },
          "llmhosts": {
            "items": {
              "$ref": "#/components/schemas/LLMHostApiReportHost"
            },
            "title": "Llmhosts",
            "type": "array"
          },
          "totals": {
            "$ref": "#/components/schemas/LLMHostApiReportTotals"
          }
        },
        "required": [
          "totals",
          "byStatus",
          "byEngine",
          "llmhosts"
        ],
        "title": "LLMHostApiReport",
        "type": "object"
      },
      "LLMHostApiReportHost": {
        "additionalProperties": false,
        "description": "An LLMHost in a report: its status, model, GPUs and cost.",
        "properties": {
          "compute": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Its LLMHostCompute's name, if any.",
            "title": "Compute"
          },
          "costPerHour": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Its cost per hour, in USD, as a decimal string.",
            "title": "Costperhour"
          },
          "deployedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Deployedat"
          },
          "endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Endpoint"
          },
          "engine": {
            "title": "Engine",
            "type": "string"
          },
          "estimatedCost": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Its estimated cost so far, in USD, as a decimal string.",
            "title": "Estimatedcost"
          },
          "gpuType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Gputype"
          },
          "gpus": {
            "title": "Gpus",
            "type": "integer"
          },
          "model": {
            "title": "Model",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "owner": {
            "description": "The owner's username.",
            "title": "Owner",
            "type": "string"
          },
          "publicUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Publicurl"
          },
          "readyReplicas": {
            "title": "Readyreplicas",
            "type": "integer"
          },
          "replicas": {
            "title": "Replicas",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "task": {
            "title": "Task",
            "type": "string"
          },
          "uptimeHours": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Uptimehours"
          }
        },
        "required": [
          "name",
          "owner",
          "status",
          "engine",
          "model",
          "task",
          "replicas",
          "readyReplicas",
          "gpus"
        ],
        "title": "LLMHostApiReportHost",
        "type": "object"
      },
      "LLMHostApiReportTotals": {
        "additionalProperties": false,
        "description": "The totals of a report of LLMHosts.",
        "properties": {
          "active": {
            "minimum": 0,
            "title": "Active",
            "type": "integer"
          },
          "costPerHour": {
            "description": "The deployed LLMHosts' cost per hour, in USD, as a decimal string.",
            "title": "Costperhour",
            "type": "string"
          },
          "deployed": {
            "minimum": 0,
            "title": "Deployed",
            "type": "integer"
          },
          "errors": {
            "minimum": 0,
            "title": "Errors",
            "type": "integer"
          },
          "estimatedCost": {
            "description": "Their estimated cost so far, in USD, as a decimal string.",
            "title": "Estimatedcost",
            "type": "string"
          },
          "gpus": {
            "description": "The GPUs that the deployed LLMHosts use.",
            "minimum": 0,
            "title": "Gpus",
            "type": "integer"
          },
          "llmhosts": {
            "minimum": 0,
            "title": "Llmhosts",
            "type": "integer"
          }
        },
        "required": [
          "llmhosts",
          "deployed",
          "active",
          "errors",
          "gpus",
          "costPerHour",
          "estimatedCost"
        ],
        "title": "LLMHostApiReportTotals",
        "type": "object"
      },
      "LLMHostApiStatus": {
        "additionalProperties": false,
        "description": "An LLMHost's status, checked now, or after a deployment: the observation, with the LLMHost's name.",
        "properties": {
          "checkedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the status was checked.",
            "title": "Checkedat"
          },
          "endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The base url inside the cluster.",
            "title": "Endpoint"
          },
          "healthy": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The result of the health check, or null if not checked.",
            "title": "Healthy"
          },
          "llmhost": {
            "description": "The LLMHost's name.",
            "title": "Llmhost",
            "type": "string"
          },
          "message": {
            "default": "",
            "description": "Why, e.g. a container error.",
            "title": "Message",
            "type": "string"
          },
          "pods": {
            "description": "A summary of each pod.",
            "items": {
              "$ref": "#/components/schemas/LLMHostApiPod"
            },
            "title": "Pods",
            "type": "array"
          },
          "publicUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The base url of the Ingress, if any.",
            "title": "Publicurl"
          },
          "readyReplicas": {
            "default": 0,
            "description": "The ready replicas.",
            "title": "Readyreplicas",
            "type": "integer"
          },
          "replicas": {
            "default": 0,
            "description": "The desired replicas.",
            "title": "Replicas",
            "type": "integer"
          },
          "status": {
            "description": "The LLMHost's status, e.g. active.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "llmhost"
        ],
        "title": "LLMHostApiStatus",
        "type": "object"
      },
      "LLMHostApiUndeployed": {
        "additionalProperties": false,
        "description": "An LLMHost whose Kubernetes resources were destroyed.",
        "properties": {
          "llmhost": {
            "description": "The LLMHost's name.",
            "title": "Llmhost",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          },
          "status": {
            "enum": [
              "provisioning",
              "pending",
              "downloading",
              "deploying",
              "active",
              "degraded",
              "inactive",
              "error"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "llmhost",
          "status",
          "message"
        ],
        "title": "LLMHostApiUndeployed",
        "type": "object"
      },
      "ListViewPagination": {
        "additionalProperties": false,
        "description": "The description of one page of a list api's resources, as :func:`paginate_listview` returns it.\n\nIts JSON is camelCase, e.g. ``pageSize``.",
        "properties": {
          "count": {
            "description": "The number of resources that match the search, on every page.",
            "minimum": 0,
            "title": "Count",
            "type": "integer"
          },
          "filter": {
            "default": "",
            "description": "The named filter that narrows the list, e.g. pending, or an empty string for none.",
            "title": "Filter",
            "type": "string"
          },
          "filters": {
            "description": "The named filters that the list offers.",
            "items": {
              "type": "string"
            },
            "title": "Filters",
            "type": "array"
          },
          "numPages": {
            "description": "The number of pages.",
            "minimum": 1,
            "title": "Numpages",
            "type": "integer"
          },
          "ordering": {
            "default": "",
            "description": "The column that sorts the list, e.g. -createdAt, or an empty string for the default order.",
            "title": "Ordering",
            "type": "string"
          },
          "page": {
            "description": "The page's number, from 1.",
            "minimum": 1,
            "title": "Page",
            "type": "integer"
          },
          "pageSize": {
            "description": "The most resources that a page has.",
            "maximum": 100,
            "minimum": 1,
            "title": "Pagesize",
            "type": "integer"
          },
          "search": {
            "default": "",
            "description": "The search, or an empty string.",
            "title": "Search",
            "type": "string"
          },
          "sortFields": {
            "description": "The columns that the list may be sorted by.",
            "items": {
              "type": "string"
            },
            "title": "Sortfields",
            "type": "array"
          }
        },
        "required": [
          "page",
          "pageSize",
          "numPages",
          "count"
        ],
        "title": "ListViewPagination",
        "type": "object"
      },
      "MCPClientApiErrorResponse": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/MCPClientApiStatusError"
          },
          {
            "$ref": "#/components/schemas/RestApiErrorResponse"
          }
        ],
        "description": "An error: a failed connection to the MCP server, with the MCPClient's connection status, or another error, e.g. a 404 for an MCPClient that the user may not read."
      },
      "MCPClientApiMCPClient": {
        "additionalProperties": false,
        "description": "An MCPClient: a :class:`smarter.apps.mcpclient.models.MCPClient`.\n\nIts credentials are their Secret's name.",
        "properties": {
          "allowedResources": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Glob patterns of the resources the LLM may read.",
            "title": "Allowedresources"
          },
          "allowedTools": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Glob patterns of the tools to offer the LLM.",
            "title": "Allowedtools"
          },
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "apiKeyHeader": {
            "description": "The http header that carries an api_key credential.",
            "title": "Apikeyheader",
            "type": "string"
          },
          "authType": {
            "description": "How to authenticate with the server.",
            "enum": [
              "none",
              "api_key",
              "oauth2",
              "bearer_token"
            ],
            "title": "Authtype",
            "type": "string"
          },
          "cacheTtl": {
            "description": "Seconds to cache the server's catalog.",
            "minimum": 0,
            "title": "Cachettl",
            "type": "integer"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the MCPClient now: they own it, and nothing uses it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The command of a stdio server.",
            "title": "Command"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "credentials": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of the Secret that holds the credential, never its value.",
            "title": "Credentials"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "endpointUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url of the MCP server's endpoint.",
            "title": "Endpointurl"
          },
          "hashedId": {
            "description": "The MCPClient's hashed id, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "headers": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Non-secret http headers to send to the server.",
            "title": "Headers"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "includeInstructions": {
            "description": "Whether the server's instructions join the system prompt.",
            "title": "Includeinstructions",
            "type": "boolean"
          },
          "isActive": {
            "description": "Whether LLMClients use the MCPClient.",
            "title": "Isactive",
            "type": "boolean"
          },
          "lastConnectedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the platform last connected.",
            "title": "Lastconnectedat"
          },
          "lastError": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The error of the last failed connection.",
            "title": "Lasterror"
          },
          "manifestUrl": {
            "description": "The url of the MCPClient's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "priority": {
            "description": "The order of an LLMClient's MCPClients. Lower runs first.",
            "minimum": 0,
            "title": "Priority",
            "type": "integer"
          },
          "protocolVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The MCP protocol version that the server negotiated.",
            "title": "Protocolversion"
          },
          "ready": {
            "description": "Whether the MCPClient is configured completely.",
            "title": "Ready",
            "type": "boolean"
          },
          "rfc1034CompliantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name, as a DNS label.",
            "title": "Rfc1034Compliantname"
          },
          "serverName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name that the server reported.",
            "title": "Servername"
          },
          "serverVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The version that the server reported.",
            "title": "Serverversion"
          },
          "status": {
            "description": "The result of the last connection.",
            "enum": [
              "unconfigured",
              "connected",
              "disconnected",
              "error"
            ],
            "title": "Status",
            "type": "string"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "timeout": {
            "description": "Seconds to wait for the server.",
            "minimum": 0,
            "title": "Timeout",
            "type": "integer"
          },
          "tools": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The names of the tools offered, as of the last connection.",
            "title": "Tools"
          },
          "transport": {
            "anyOf": [
              {
                "enum": [
                  "stdio",
                  "sse",
                  "http"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The MCP transport.",
            "title": "Transport"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The MCPClient's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "manifestUrl",
          "ready",
          "timeout",
          "authType",
          "apiKeyHeader",
          "includeInstructions",
          "cacheTtl",
          "isActive",
          "status",
          "priority"
        ],
        "title": "MCPClientApiMCPClient",
        "type": "object"
      },
      "MCPClientApiStatus": {
        "additionalProperties": false,
        "description": "An MCPClient's connection to its MCP server: the result of the last connection, and what the server reported.",
        "properties": {
          "lastConnected": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the platform last connected.",
            "title": "Lastconnected"
          },
          "lastError": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The error of the last failed connection.",
            "title": "Lasterror"
          },
          "name": {
            "description": "The MCPClient's name.",
            "title": "Name",
            "type": "string"
          },
          "protocolVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The MCP protocol version that the server negotiated.",
            "title": "Protocolversion"
          },
          "serverName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name that the server reported.",
            "title": "Servername"
          },
          "serverVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The version that the server reported.",
            "title": "Serverversion"
          },
          "status": {
            "description": "The result of the last connection.",
            "enum": [
              "unconfigured",
              "connected",
              "disconnected",
              "error"
            ],
            "title": "Status",
            "type": "string"
          },
          "tools": {
            "description": "The names of the tools offered, as of the last connection.",
            "items": {
              "type": "string"
            },
            "title": "Tools",
            "type": "array"
          }
        },
        "required": [
          "name",
          "status",
          "tools"
        ],
        "title": "MCPClientApiStatus",
        "type": "object"
      },
      "MCPClientApiStatusError": {
        "additionalProperties": false,
        "description": "A failed connection to an MCP server: the error, beside the MCPClient's connection status.",
        "properties": {
          "detail": {
            "description": "The error, for a person.",
            "title": "Detail",
            "type": "string"
          },
          "lastConnected": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the platform last connected.",
            "title": "Lastconnected"
          },
          "lastError": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The error of the last failed connection.",
            "title": "Lasterror"
          },
          "name": {
            "description": "The MCPClient's name.",
            "title": "Name",
            "type": "string"
          },
          "protocolVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The MCP protocol version that the server negotiated.",
            "title": "Protocolversion"
          },
          "serverName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name that the server reported.",
            "title": "Servername"
          },
          "serverVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The version that the server reported.",
            "title": "Serverversion"
          },
          "status": {
            "description": "The result of the last connection.",
            "enum": [
              "unconfigured",
              "connected",
              "disconnected",
              "error"
            ],
            "title": "Status",
            "type": "string"
          },
          "tools": {
            "description": "The names of the tools offered, as of the last connection.",
            "items": {
              "type": "string"
            },
            "title": "Tools",
            "type": "array"
          }
        },
        "required": [
          "name",
          "status",
          "tools",
          "detail"
        ],
        "title": "MCPClientApiStatusError",
        "type": "object"
      },
      "MCPClientApiTool": {
        "additionalProperties": false,
        "description": "A tool that an MCP server offers, and that the MCPClient allows.",
        "properties": {
          "description": {
            "default": "",
            "description": "What the tool does, for the LLM.",
            "title": "Description",
            "type": "string"
          },
          "destructive": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Whether the server says the tool may destroy data.",
            "title": "Destructive"
          },
          "inputSchema": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The JSON Schema of the tool's arguments.",
            "title": "Inputschema",
            "type": "object"
          },
          "name": {
            "description": "The tool's name, which an LLM calls it by.",
            "title": "Name",
            "type": "string"
          },
          "readOnly": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Whether the server says the tool changes nothing.",
            "title": "Readonly"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The tool's title, for a person.",
            "title": "Title"
          }
        },
        "required": [
          "name",
          "inputSchema"
        ],
        "title": "MCPClientApiTool",
        "type": "object"
      },
      "MCPClientApiToolResult": {
        "additionalProperties": false,
        "description": "The result of a call of an MCPClient's tool, as text for an LLM.",
        "properties": {
          "content": {
            "description": "The tool's result, as text. Binary content is described, not included.",
            "title": "Content",
            "type": "string"
          },
          "isError": {
            "description": "Whether the tool reported an error.",
            "title": "Iserror",
            "type": "boolean"
          },
          "name": {
            "description": "The MCPClient's name.",
            "title": "Name",
            "type": "string"
          },
          "tool": {
            "description": "The tool's name.",
            "title": "Tool",
            "type": "string"
          }
        },
        "required": [
          "name",
          "tool",
          "isError",
          "content"
        ],
        "title": "MCPClientApiToolResult",
        "type": "object"
      },
      "MCPClientApiTools": {
        "additionalProperties": false,
        "description": "An MCPClient's connection status, its server's instructions, and the tools that it offers the LLM.",
        "properties": {
          "instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The server's instructions for the LLM.",
            "title": "Instructions"
          },
          "lastConnected": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the platform last connected.",
            "title": "Lastconnected"
          },
          "lastError": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The error of the last failed connection.",
            "title": "Lasterror"
          },
          "name": {
            "description": "The MCPClient's name.",
            "title": "Name",
            "type": "string"
          },
          "protocolVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The MCP protocol version that the server negotiated.",
            "title": "Protocolversion"
          },
          "serverName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name that the server reported.",
            "title": "Servername"
          },
          "serverVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The version that the server reported.",
            "title": "Serverversion"
          },
          "status": {
            "description": "The result of the last connection.",
            "enum": [
              "unconfigured",
              "connected",
              "disconnected",
              "error"
            ],
            "title": "Status",
            "type": "string"
          },
          "tools": {
            "description": "The tools that the MCPClient allows.",
            "items": {
              "$ref": "#/components/schemas/MCPClientApiTool"
            },
            "title": "Tools",
            "type": "array"
          }
        },
        "required": [
          "name",
          "status",
          "tools"
        ],
        "title": "MCPClientApiTools",
        "type": "object"
      },
      "OrchestrationStrategy": {
        "description": "Coordination pattern the Orchestrator applies across its member LLMClients.\n\nValues must stay aligned with\nsmarter.apps.orchestrator.models.OrchestrationStrategy.",
        "enum": [
          "sequential",
          "parallel",
          "supervisor",
          "router",
          "voting",
          "debate"
        ],
        "title": "OrchestrationStrategy",
        "type": "string"
      },
      "OrchestratorApiOrchestrator": {
        "additionalProperties": false,
        "description": "An Orchestrator, a multi-agent workflow over LLMClients: a :class:`smarter.apps.orchestrator.models.Orchestrator`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the Orchestrator now: they own it, and nothing uses it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "hashedId": {
            "description": "The Orchestrator's hashed id, e.g. rMTAwMDAwMQx, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isActive": {
            "description": "Orchestrator.is_active.",
            "title": "Isactive",
            "type": "boolean"
          },
          "llmclients": {
            "description": "Orchestrator.llmclients: the LLMClients' ids.",
            "items": {
              "type": "integer"
            },
            "title": "Llmclients",
            "type": "array"
          },
          "manifestUrl": {
            "description": "The url of the Orchestrator's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "maxIterations": {
            "description": "Orchestrator.max_iterations.",
            "minimum": 0,
            "title": "Maxiterations",
            "type": "integer"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "strategy": {
            "description": "Orchestrator.strategy: how its LLMClients collaborate.",
            "enum": [
              "sequential",
              "parallel",
              "supervisor",
              "router",
              "voting",
              "debate"
            ],
            "title": "Strategy",
            "type": "string"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The Orchestrator's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "manifestUrl",
          "strategy",
          "maxIterations",
          "isActive"
        ],
        "title": "OrchestratorApiOrchestrator",
        "type": "object"
      },
      "Parameter": {
        "description": "Parameter class for parameterized Plugins.\n\nThis structure is\nintended to match that which is used in the OpenAPI\nfunction calling specification.\nIt is used to define the parameters that a plugin can accept,\nand also for creating the function calling prompt api.",
        "properties": {
          "default": {
            "default": null,
            "description": "The default value of the parameter, if any.",
            "title": "Default"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A description of the parameter.",
            "title": "Description"
          },
          "enum": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A list of allowed values for the parameter. Example: ['Celsius', 'Fahrenheit']",
            "title": "Enum"
          },
          "name": {
            "description": "The name of the parameter.",
            "title": "Name",
            "type": "string"
          },
          "required": {
            "default": false,
            "description": "Whether the parameter is required.",
            "title": "Required",
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/ParameterType",
            "description": "The data type of the parameter (one of: string, number, integer, boolean, object, array, null)."
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "Parameter",
        "type": "object"
      },
      "ParameterType": {
        "description": "Enum for parameter types.",
        "enum": [
          "string",
          "number",
          "integer",
          "boolean",
          "object",
          "array",
          "null"
        ],
        "title": "ParameterType",
        "type": "string"
      },
      "PipelineDisposition": {
        "description": "Final verdict the pipeline hands back to the Harness.\n\nOrdered from least to most severe; see\n:data:`smarter.apps.guardrail.services.pipeline._DISPOSITION_PRECEDENCE`\nfor how multiple triggered guardrails are folded into one value.\n\n:cvar ALLOWED: No guardrail triggered, or only guardrails in monitor mode, or with\n    action ``LOG``, triggered.\n:cvar FLAGGED: A guardrail triggered with action ``FLAG``.\n:cvar REDACTED: A guardrail triggered with action ``REDACT``.\n:cvar TRANSFORMED: A guardrail triggered with action ``TRANSFORM``.\n:cvar ESCALATED: A guardrail triggered with action ``ESCALATE``.\n:cvar BLOCKED: A guardrail triggered with action ``BLOCK``; the\n    request or response was withheld.",
        "enum": [
          "allowed",
          "flagged",
          "redacted",
          "transformed",
          "blocked",
          "escalated"
        ],
        "title": "PipelineDisposition",
        "type": "string"
      },
      "PluginApiPluginMeta": {
        "additionalProperties": false,
        "description": "A plugin's metadata: a :class:`smarter.apps.llmtool.models.PluginMeta`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the plugin now: they own it, and nothing depends on it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "kind": {
            "description": "The plugin's SAM kind, e.g. SqlPlugin.",
            "title": "Kind",
            "type": "string"
          },
          "manifestUrl": {
            "description": "The url of the plugin's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "pluginClass": {
            "description": "PluginMeta.plugin_class.",
            "enum": [
              "api",
              "skill",
              "sql",
              "static",
              "websearch",
              "imagesearch"
            ],
            "title": "Pluginclass",
            "type": "string"
          },
          "ready": {
            "description": "Whether the plugin has the data and configuration that it needs.",
            "title": "Ready",
            "type": "boolean"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The plugin's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "userProfile",
          "pluginClass",
          "manifestUrl",
          "ready",
          "kind",
          "canDelete"
        ],
        "title": "PluginApiPluginMeta",
        "type": "object"
      },
      "PromptChatApiAudioPart": {
        "additionalProperties": true,
        "description": "A message's audio part.",
        "properties": {
          "input_audio": {
            "$ref": "#/components/schemas/PromptChatApiInputAudio"
          },
          "type": {
            "const": "input_audio",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "input_audio"
        ],
        "title": "PromptChatApiAudioPart",
        "type": "object"
      },
      "PromptChatApiChoice": {
        "additionalProperties": true,
        "description": "A choice of a chat completion.",
        "properties": {
          "finish_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "e.g. stop, length or tool_calls.",
            "title": "Finish Reason"
          },
          "index": {
            "default": 0,
            "title": "Index",
            "type": "integer"
          },
          "message": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiMessage"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "title": "PromptChatApiChoice",
        "type": "object"
      },
      "PromptChatApiCompletion": {
        "description": "The LLM's chat completion, in the format of the OpenAI api, with only these fields.\n\nSmarter's own additions, ``smarter`` and ``metadata``, are not part of it: the messages, plugins and\ntools are in :class:`PromptChatApiPromptResult`, and ``metadata``, which describes the tool calls\nwith their plugins' owners, is returned only to the cli.",
        "properties": {
          "choices": {
            "items": {
              "$ref": "#/components/schemas/PromptChatApiChoice"
            },
            "title": "Choices",
            "type": "array"
          },
          "created": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Created"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Id"
          },
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Model"
          },
          "object": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Object"
          },
          "service_tier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Service Tier"
          },
          "system_fingerprint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "System Fingerprint"
          },
          "usage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiUsage"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "title": "PromptChatApiCompletion",
        "type": "object"
      },
      "PromptChatApiCompletionV1": {
        "additionalProperties": true,
        "deprecated": true,
        "description": "The parsed body of a successful prompt, version 1: a chat completion, with Smarter's additions.",
        "properties": {
          "smarter": {
            "$ref": "#/components/schemas/PromptChatApiSmarterCompletionV1"
          }
        },
        "required": [
          "smarter"
        ],
        "title": "PromptChatApiCompletionV1",
        "type": "object"
      },
      "PromptChatApiConfig": {
        "additionalProperties": true,
        "description": "The configuration, version 2.\n\n``PromptConfigView.config()`` builds one, from which every response is derived:\n:meth:`public` for a deployed LLMClient's own host, and :meth:`to_v1` for older clients.",
        "properties": {
          "contract": {
            "const": 2,
            "default": 2,
            "title": "Contract",
            "type": "integer"
          },
          "debug_mode": {
            "description": "The ENABLE_REACTAPP_DEBUG_MODE waffle switch.",
            "title": "Debug Mode",
            "type": "boolean"
          },
          "extensions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiExtensionList"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "history": {
            "$ref": "#/components/schemas/PromptChatApiHistory"
          },
          "llmclient": {
            "$ref": "#/components/schemas/PromptChatApiLLMClient"
          },
          "meta_data": {
            "$ref": "#/components/schemas/PromptChatApiMetaData"
          },
          "plugins": {
            "$ref": "#/components/schemas/PromptChatApiPluginList"
          },
          "sandbox_mode": {
            "description": "True for a workbench url.",
            "title": "Sandbox Mode",
            "type": "boolean"
          },
          "session_key": {
            "description": "The chat session's key.",
            "pattern": "^[a-fA-F0-9]{64}$",
            "title": "Session Key",
            "type": "string"
          }
        },
        "required": [
          "session_key",
          "sandbox_mode",
          "debug_mode",
          "meta_data",
          "llmclient",
          "history",
          "plugins"
        ],
        "title": "PromptChatApiConfig",
        "type": "object"
      },
      "PromptChatApiConfigRequest": {
        "additionalProperties": true,
        "description": "The configuration api's request body.",
        "properties": {
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The chat session's key, or empty for a new session.",
            "title": "Session Key"
          }
        },
        "title": "PromptChatApiConfigRequest",
        "type": "object"
      },
      "PromptChatApiConfigResponse": {
        "additionalProperties": true,
        "description": "The configuration api's response, version 2.",
        "properties": {
          "api": {
            "description": "The api version, e.g. \"smarter.sh/v1\".",
            "title": "Api",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/PromptChatApiConfig"
          },
          "metadata": {
            "$ref": "#/components/schemas/PromptChatApiJournalMetadata",
            "description": "The journal's command and thing."
          }
        },
        "required": [
          "api",
          "data"
        ],
        "title": "PromptChatApiConfigResponse",
        "type": "object"
      },
      "PromptChatApiErrorBody": {
        "additionalProperties": true,
        "description": "The error of a failed request: the same shape for every error of the configuration and prompt apis.",
        "properties": {
          "description": {
            "description": "A human-readable description, which Smarter Chat displays.",
            "title": "Description",
            "type": "string"
          },
          "errorClass": {
            "description": "The name of the error's class, e.g. NotFound or LLMProviderError.",
            "title": "Errorclass",
            "type": "string"
          },
          "status": {
            "description": "The http status.",
            "title": "Status",
            "type": "integer"
          }
        },
        "required": [
          "errorClass",
          "description",
          "status"
        ],
        "title": "PromptChatApiErrorBody",
        "type": "object"
      },
      "PromptChatApiErrorResponse": {
        "additionalProperties": true,
        "description": "The body of an error response of the configuration or prompt apis, in both versions of the contract.",
        "properties": {
          "api": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Api"
          },
          "error": {
            "$ref": "#/components/schemas/PromptChatApiErrorBody"
          },
          "metadata": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiJournalMetadata"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "error"
        ],
        "title": "PromptChatApiErrorResponse",
        "type": "object"
      },
      "PromptChatApiExtensionList": {
        "additionalProperties": true,
        "description": "The LLMClient's extensions.\n\nThe list itself is returned only in the complete configuration.",
        "properties": {
          "extensions": {
            "items": {
              "$ref": "#/components/schemas/PromptChatApiLLMClientExtension"
            },
            "title": "Extensions",
            "type": "array"
          },
          "meta_data": {
            "$ref": "#/components/schemas/PromptChatApiListMetaData"
          }
        },
        "required": [
          "meta_data"
        ],
        "title": "PromptChatApiExtensionList",
        "type": "object"
      },
      "PromptChatApiFilePart": {
        "additionalProperties": true,
        "description": "A message's file part.",
        "properties": {
          "file": {
            "$ref": "#/components/schemas/PromptChatApiFileRef"
          },
          "type": {
            "const": "file",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "file"
        ],
        "title": "PromptChatApiFilePart",
        "type": "object"
      },
      "PromptChatApiFileRef": {
        "additionalProperties": true,
        "description": "The file of a file part: its base64 data, or the id of an uploaded file.",
        "properties": {
          "file_data": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "File Data"
          },
          "file_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "File Id"
          },
          "filename": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Filename"
          }
        },
        "title": "PromptChatApiFileRef",
        "type": "object"
      },
      "PromptChatApiFunctionCall": {
        "additionalProperties": true,
        "description": "The function that an assistant message calls.",
        "properties": {
          "arguments": {
            "description": "The function's arguments, as a JSON string.",
            "title": "Arguments",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "arguments"
        ],
        "title": "PromptChatApiFunctionCall",
        "type": "object"
      },
      "PromptChatApiHistory": {
        "additionalProperties": false,
        "description": "The chat session's history, in version 2.\n\nOnly ``chat_history`` is public.",
        "properties": {
          "chat_history": {
            "description": "The session's messages, which restore the chat thread.",
            "items": {
              "$ref": "#/components/schemas/PromptChatApiMessage"
            },
            "title": "Chat History",
            "type": "array"
          },
          "llmclient_request_history": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiLLMClientRequest"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Llmclient Request History"
          },
          "plugin_selector_history": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiPluginSelection"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Plugin Selector History"
          },
          "prompt_plugin_usage_history": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiPromptPluginUsage"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Prompt Plugin Usage History"
          },
          "prompt_tool_call_history": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiPromptToolCall"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Prompt Tool Call History"
          }
        },
        "title": "PromptChatApiHistory",
        "type": "object"
      },
      "PromptChatApiImagePart": {
        "additionalProperties": true,
        "description": "A message's image part.",
        "properties": {
          "image_url": {
            "$ref": "#/components/schemas/PromptChatApiImageUrl"
          },
          "type": {
            "const": "image_url",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "image_url"
        ],
        "title": "PromptChatApiImagePart",
        "type": "object"
      },
      "PromptChatApiImageUrl": {
        "additionalProperties": true,
        "description": "The image of an image part: an http(s) or base64 data url.",
        "properties": {
          "detail": {
            "anyOf": [
              {
                "enum": [
                  "auto",
                  "low",
                  "high"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Detail"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "PromptChatApiImageUrl",
        "type": "object"
      },
      "PromptChatApiInputAudio": {
        "additionalProperties": true,
        "description": "The audio of an audio part: base64 encoded.",
        "properties": {
          "data": {
            "title": "Data",
            "type": "string"
          },
          "format": {
            "enum": [
              "wav",
              "mp3"
            ],
            "title": "Format",
            "type": "string"
          }
        },
        "required": [
          "data",
          "format"
        ],
        "title": "PromptChatApiInputAudio",
        "type": "object"
      },
      "PromptChatApiJournalMetadata": {
        "additionalProperties": true,
        "description": "The journal's record of a request, which every journaled response carries.",
        "properties": {
          "command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The journal's command, e.g. prompt.",
            "title": "Command"
          },
          "thing": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The journal's thing, e.g. LLMClient.",
            "title": "Thing"
          }
        },
        "title": "PromptChatApiJournalMetadata",
        "type": "object"
      },
      "PromptChatApiLLMClient": {
        "additionalProperties": true,
        "description": "The LLMClient, in version 2 of the configuration.",
        "properties": {
          "app_assistant": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Assistant"
          },
          "app_example_prompts": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Example Prompts"
          },
          "app_file_attachment": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App File Attachment"
          },
          "app_info_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Info Url"
          },
          "app_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Name"
          },
          "app_placeholder": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Placeholder"
          },
          "app_welcome_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Welcome Message"
          },
          "default_model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Default Model"
          },
          "default_system_role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The system prompt of a new chat session.",
            "title": "Default System Role"
          },
          "deployed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Deployed"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Provider"
          },
          "styles": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyles"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The look of the chat: the manifest's spec.config.styles, with snake_case keys."
          },
          "total_tools": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The number of the LLMClient's extensions, plugins and MCPClients.",
            "title": "Total Tools"
          },
          "url_llmclient": {
            "description": "The url of the LLMClient's prompt api.",
            "title": "Url Llmclient",
            "type": "string"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "url_llmclient"
        ],
        "title": "PromptChatApiLLMClient",
        "type": "object"
      },
      "PromptChatApiLLMClientExtension": {
        "additionalProperties": false,
        "description": "An extension of the LLMClient: a :class:`smarter.apps.llmclient.models.LLMClientExtensions`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "enabled": {
            "description": "Whether the Extension is enabled, so that its tools are offered.",
            "title": "Enabled",
            "type": "boolean"
          },
          "extension": {
            "description": "LLMClientExtensions.extension: the Extension's id.",
            "title": "Extension",
            "type": "integer"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "llmclient": {
            "description": "LLMClientExtensions.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "name": {
            "description": "The Extension's slug, e.g. weather.",
            "title": "Name",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The Extension's installed version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "llmclient",
          "extension",
          "name",
          "enabled"
        ],
        "title": "PromptChatApiLLMClientExtension",
        "type": "object"
      },
      "PromptChatApiLLMClientPlugin": {
        "additionalProperties": false,
        "description": "A plugin of the LLMClient: a :class:`smarter.apps.llmclient.models.LLMClientPlugin`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "llmclient": {
            "description": "LLMClientPlugin.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "plugin_meta": {
            "$ref": "#/components/schemas/PromptChatApiPluginMeta",
            "description": "LLMClientPlugin.plugin_meta."
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "llmclient",
          "plugin_meta"
        ],
        "title": "PromptChatApiLLMClientPlugin",
        "type": "object"
      },
      "PromptChatApiLLMClientRequest": {
        "additionalProperties": false,
        "description": "A request to the LLMClient's prompt api: a :class:`smarter.apps.llmclient.models.LLMClientRequests`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "is_aggregation": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClientRequests.is_aggregation.",
            "title": "Is Aggregation"
          },
          "llmclient": {
            "description": "LLMClientRequests.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "request": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiPromptRequest"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClientRequests.request."
          },
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClientRequests.session_key.",
            "title": "Session Key"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "llmclient"
        ],
        "title": "PromptChatApiLLMClientRequest",
        "type": "object"
      },
      "PromptChatApiLambdaResponseV1": {
        "additionalProperties": true,
        "deprecated": true,
        "description": "A prompt's result, version 1: an AWS Lambda style response, whose body is a JSON string.",
        "properties": {
          "body": {
            "description": "A PromptChatApiCompletionV1, or a PromptChatApiFailureV1, as a JSON string.",
            "title": "Body",
            "type": "string"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Headers",
            "type": "object"
          },
          "isBase64Encoded": {
            "default": false,
            "title": "Isbase64Encoded",
            "type": "boolean"
          },
          "statusCode": {
            "title": "Statuscode",
            "type": "integer"
          }
        },
        "required": [
          "statusCode",
          "body"
        ],
        "title": "PromptChatApiLambdaResponseV1",
        "type": "object"
      },
      "PromptChatApiListMetaData": {
        "additionalProperties": true,
        "description": "The counts of a list of the LLMClient's plugins or extensions.",
        "properties": {
          "extensions_returned": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Extensions Returned"
          },
          "plugins_returned": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Plugins Returned"
          },
          "total_extensions": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Total Extensions"
          },
          "total_plugins": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Total Plugins"
          }
        },
        "title": "PromptChatApiListMetaData",
        "type": "object"
      },
      "PromptChatApiMessage": {
        "additionalProperties": true,
        "description": "A message, in the format of the OpenAI chat completion api.\n\nSmarter adds two roles, which are only displayed and never sent to an LLM: ``smarter``, a note\nabout what the backend did, and ``smarter_error``, a failed prompt's error.",
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "items": {
                  "discriminator": {
                    "mapping": {
                      "file": "#/components/schemas/PromptChatApiFilePart",
                      "image_url": "#/components/schemas/PromptChatApiImagePart",
                      "input_audio": "#/components/schemas/PromptChatApiAudioPart",
                      "refusal": "#/components/schemas/PromptChatApiRefusalPart",
                      "text": "#/components/schemas/PromptChatApiTextPart"
                    },
                    "propertyName": "type"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/PromptChatApiTextPart"
                    },
                    {
                      "$ref": "#/components/schemas/PromptChatApiImagePart"
                    },
                    {
                      "$ref": "#/components/schemas/PromptChatApiAudioPart"
                    },
                    {
                      "$ref": "#/components/schemas/PromptChatApiFilePart"
                    },
                    {
                      "$ref": "#/components/schemas/PromptChatApiRefusalPart"
                    }
                  ]
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The message's text, or its parts. Null for an assistant message that only calls tools.",
            "title": "Content"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of a tool message's function.",
            "title": "Name"
          },
          "role": {
            "description": "system, assistant, user, tool, smarter or smarter_error.",
            "title": "Role",
            "type": "string"
          },
          "tool_call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The tool call that a tool message answers.",
            "title": "Tool Call Id"
          },
          "tool_calls": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiToolCall"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "An assistant message's tool calls.",
            "title": "Tool Calls"
          }
        },
        "required": [
          "role"
        ],
        "title": "PromptChatApiMessage",
        "type": "object"
      },
      "PromptChatApiMetaData": {
        "additionalProperties": true,
        "description": "The LLMClient's state.",
        "properties": {
          "is_deployed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Is Deployed"
          },
          "is_valid": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Is Valid"
          },
          "ready": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Ready"
          }
        },
        "title": "PromptChatApiMetaData",
        "type": "object"
      },
      "PromptChatApiPluginList": {
        "additionalProperties": true,
        "description": "The LLMClient's plugins.\n\nThe list itself is returned only in the complete configuration.",
        "properties": {
          "meta_data": {
            "$ref": "#/components/schemas/PromptChatApiListMetaData"
          },
          "plugins": {
            "items": {
              "$ref": "#/components/schemas/PromptChatApiLLMClientPlugin"
            },
            "title": "Plugins",
            "type": "array"
          }
        },
        "required": [
          "meta_data"
        ],
        "title": "PromptChatApiPluginList",
        "type": "object"
      },
      "PromptChatApiPluginMeta": {
        "additionalProperties": false,
        "description": "A plugin's metadata: a :class:`smarter.apps.llmtool.models.PluginMeta`.\n\nIts owner is left out: the configuration never includes a user's profile.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations: a list of key-value pairs, or, in legacy rows, an object.",
            "title": "Annotations"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "maxLength": 255,
            "title": "Name",
            "type": "string"
          },
          "plugin_class": {
            "description": "PluginMeta.plugin_class.",
            "enum": [
              "api",
              "skill",
              "sql",
              "static",
              "websearch",
              "imagesearch"
            ],
            "title": "Plugin Class",
            "type": "string"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          },
          "version": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "plugin_class"
        ],
        "title": "PromptChatApiPluginMeta",
        "type": "object"
      },
      "PromptChatApiPluginSelection": {
        "additionalProperties": false,
        "description": "A plugin selector's activation: a :class:`smarter.apps.llmtool.models.PluginSelectorHistory`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "messages": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PromptChatApiMessage"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PluginSelectorHistory.messages.",
            "title": "Messages"
          },
          "plugin_selector": {
            "description": "PluginSelectorHistory.plugin_selector: the PluginSelector's id.",
            "title": "Plugin Selector",
            "type": "integer"
          },
          "search_term": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PluginSelectorHistory.search_term.",
            "title": "Search Term"
          },
          "session_key": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PluginSelectorHistory.session_key.",
            "title": "Session Key"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "plugin_selector"
        ],
        "title": "PromptChatApiPluginSelection",
        "type": "object"
      },
      "PromptChatApiProgressEvent": {
        "additionalProperties": true,
        "description": "The data of a ``progress`` event: a step of a running prompt.",
        "properties": {
          "message": {
            "description": "A short sentence, which Smarter Chat displays as is.",
            "title": "Message",
            "type": "string"
          },
          "type": {
            "enum": [
              "llm_request",
              "tool_requested",
              "tool_responded",
              "plugin_called",
              "mcp_tool_called",
              "mcp_tool_responded",
              "mcp_tool_failed"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "message"
        ],
        "title": "PromptChatApiProgressEvent",
        "type": "object"
      },
      "PromptChatApiProgressResult": {
        "additionalProperties": true,
        "description": "The data of the final ``result`` event.",
        "properties": {
          "response": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiPromptResponse"
              },
              {
                "$ref": "#/components/schemas/PromptChatApiPromptResponseV1"
              },
              {
                "$ref": "#/components/schemas/PromptChatApiErrorResponse"
              }
            ],
            "description": "Exactly the JSON of a non-streaming response.",
            "title": "Response"
          },
          "status": {
            "description": "The prompt's http status.",
            "title": "Status",
            "type": "integer"
          }
        },
        "required": [
          "status",
          "response"
        ],
        "title": "PromptChatApiProgressResult",
        "type": "object"
      },
      "PromptChatApiPromptPluginUsage": {
        "additionalProperties": false,
        "description": "A plugin that the chat session used: a :class:`smarter.apps.prompt.models.PromptPluginUsage`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "input_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptPluginUsage.input_text.",
            "title": "Input Text"
          },
          "plugin": {
            "description": "PromptPluginUsage.plugin: the PluginMeta's id.",
            "title": "Plugin",
            "type": "integer"
          },
          "prompt": {
            "description": "PromptPluginUsage.prompt: the chat session's id.",
            "title": "Prompt",
            "type": "integer"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "prompt",
          "plugin"
        ],
        "title": "PromptChatApiPromptPluginUsage",
        "type": "object"
      },
      "PromptChatApiPromptRequest": {
        "additionalProperties": true,
        "description": "The prompt api's request body: the chat thread, with only the roles that LLMs accept.",
        "properties": {
          "messages": {
            "items": {
              "$ref": "#/components/schemas/PromptChatApiMessage"
            },
            "title": "Messages",
            "type": "array"
          },
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Session Key"
          }
        },
        "required": [
          "messages"
        ],
        "title": "PromptChatApiPromptRequest",
        "type": "object"
      },
      "PromptChatApiPromptResponse": {
        "additionalProperties": true,
        "description": "The prompt api's response, version 2.\n\nA failed prompt has ``error`` too, and its http status is the LLM provider's. Its ``data.messages``\ninclude a ``smarter_error`` message, which is also saved in the session's history.",
        "properties": {
          "api": {
            "description": "The api version, e.g. \"smarter.sh/v1\".",
            "title": "Api",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/PromptChatApiPromptResult"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiErrorBody"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "metadata": {
            "$ref": "#/components/schemas/PromptChatApiJournalMetadata",
            "description": "The journal's command and thing."
          }
        },
        "required": [
          "api",
          "data"
        ],
        "title": "PromptChatApiPromptResponse",
        "type": "object"
      },
      "PromptChatApiPromptResponseV1": {
        "additionalProperties": true,
        "deprecated": true,
        "description": "The prompt api's response, version 1.",
        "properties": {
          "api": {
            "description": "The api version, e.g. \"smarter.sh/v1\".",
            "title": "Api",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/PromptChatApiLambdaResponseV1"
          },
          "metadata": {
            "$ref": "#/components/schemas/PromptChatApiJournalMetadata",
            "description": "The journal's command and thing."
          }
        },
        "required": [
          "api",
          "data"
        ],
        "title": "PromptChatApiPromptResponseV1",
        "type": "object"
      },
      "PromptChatApiPromptResult": {
        "additionalProperties": true,
        "description": "The result of a prompt, version 2.",
        "properties": {
          "completion": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiCompletion"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The LLM's chat completion, in the format of the OpenAI api: its choices and usage."
          },
          "contract": {
            "const": 2,
            "default": 2,
            "title": "Contract",
            "type": "integer"
          },
          "messages": {
            "description": "The messages that the prompt added to the chat thread, in order.",
            "items": {
              "$ref": "#/components/schemas/PromptChatApiMessage"
            },
            "title": "Messages",
            "type": "array"
          },
          "plugins": {
            "description": "The plugins that Smarter selected.",
            "items": {
              "type": "string"
            },
            "title": "Plugins",
            "type": "array"
          },
          "status": {
            "description": "The prompt's http status: 200, or the LLM provider's error status.",
            "title": "Status",
            "type": "integer"
          },
          "tools": {
            "description": "The functions that the LLM could call.",
            "items": {
              "type": "string"
            },
            "title": "Tools",
            "type": "array"
          }
        },
        "required": [
          "status"
        ],
        "title": "PromptChatApiPromptResult",
        "type": "object"
      },
      "PromptChatApiPromptToolCall": {
        "additionalProperties": false,
        "description": "A tool call of the chat session: a :class:`smarter.apps.prompt.models.PromptToolCall`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "function_args": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.function_args.",
            "title": "Function Args"
          },
          "function_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.function_name.",
            "title": "Function Name"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "plugin": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.plugin: the PluginMeta's id, for a plugin.",
            "title": "Plugin"
          },
          "prompt": {
            "description": "PromptToolCall.prompt: the chat session's id.",
            "title": "Prompt",
            "type": "integer"
          },
          "request": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonValue"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.request: the tool's input."
          },
          "response": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonValue"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.response: the tool's result."
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "prompt"
        ],
        "title": "PromptChatApiPromptToolCall",
        "type": "object"
      },
      "PromptChatApiRefusalPart": {
        "additionalProperties": true,
        "description": "An assistant message's refusal part.",
        "properties": {
          "refusal": {
            "title": "Refusal",
            "type": "string"
          },
          "type": {
            "const": "refusal",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "refusal"
        ],
        "title": "PromptChatApiRefusalPart",
        "type": "object"
      },
      "PromptChatApiSmarterCompletionV1": {
        "additionalProperties": true,
        "deprecated": true,
        "description": "Smarter's additions to a completion, version 1.",
        "properties": {
          "messages": {
            "items": {
              "$ref": "#/components/schemas/PromptChatApiMessage"
            },
            "title": "Messages",
            "type": "array"
          },
          "plugins": {
            "items": {
              "type": "string"
            },
            "title": "Plugins",
            "type": "array"
          },
          "tools": {
            "items": {
              "type": "string"
            },
            "title": "Tools",
            "type": "array"
          }
        },
        "title": "PromptChatApiSmarterCompletionV1",
        "type": "object"
      },
      "PromptChatApiStyleSection": {
        "additionalProperties": true,
        "description": "A section of the LLMClient's styles: the colors of one of chatscope's components.\n\nA section has only the settings that its component has, in the manifest's\n``spec.config.styles``. See :mod:`smarter.apps.llmclient.manifest.models.llmclient.styles`.",
        "properties": {
          "background_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Background Color"
          },
          "border_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Border Color"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Color"
          },
          "editor_background_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Editor Background Color"
          },
          "info_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Info Color"
          },
          "link_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Link Color"
          },
          "placeholder_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Placeholder Color"
          }
        },
        "title": "PromptChatApiStyleSection",
        "type": "object"
      },
      "PromptChatApiStyles": {
        "additionalProperties": true,
        "description": "The look of the LLMClient's chat: its manifest's ``spec.config.styles``, with snake_case keys.\n\nSmarter Chat applies it as css custom properties. Every setting is optional, and one that is\nleft out keeps the chat's default.",
        "properties": {
          "app_background_image_size": {
            "anyOf": [
              {
                "enum": [
                  "cover",
                  "contain",
                  "auto"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Background Image Size"
          },
          "app_background_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Background Image Url"
          },
          "app_logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "App Logo Url"
          },
          "assistant_avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Assistant Avatar Url"
          },
          "border_radius": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Border Radius"
          },
          "buttons": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "conversation_header": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "font_family": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Font Family"
          },
          "font_size": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Font Size"
          },
          "google_font": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Google Font"
          },
          "incoming_message": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "main_container": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "message_input": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "message_list": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "outgoing_message": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "typing_indicator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiStyleSection"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "user_avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "User Avatar Url"
          }
        },
        "title": "PromptChatApiStyles",
        "type": "object"
      },
      "PromptChatApiTextPart": {
        "additionalProperties": true,
        "description": "A message's text part, in the format of the OpenAI chat completion api.",
        "properties": {
          "text": {
            "title": "Text",
            "type": "string"
          },
          "type": {
            "const": "text",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "text"
        ],
        "title": "PromptChatApiTextPart",
        "type": "object"
      },
      "PromptChatApiTokenDetails": {
        "additionalProperties": true,
        "description": "The breakdown of a completion's tokens.",
        "properties": {
          "audio_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Audio Tokens"
          },
          "cached_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Cached Tokens"
          },
          "reasoning_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Reasoning Tokens"
          }
        },
        "title": "PromptChatApiTokenDetails",
        "type": "object"
      },
      "PromptChatApiToolCall": {
        "additionalProperties": true,
        "description": "A tool call of an assistant message, in the format of the OpenAI chat completion api.",
        "properties": {
          "function": {
            "$ref": "#/components/schemas/PromptChatApiFunctionCall"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "const": "function",
            "default": "function",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "function"
        ],
        "title": "PromptChatApiToolCall",
        "type": "object"
      },
      "PromptChatApiUsage": {
        "additionalProperties": true,
        "description": "A chat completion's token usage.",
        "properties": {
          "completion_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Completion Tokens"
          },
          "completion_tokens_details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiTokenDetails"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "prompt_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Prompt Tokens"
          },
          "prompt_tokens_details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PromptChatApiTokenDetails"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "total_tokens": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Total Tokens"
          }
        },
        "title": "PromptChatApiUsage",
        "type": "object"
      },
      "PromptHistoryApiPluginUsage": {
        "additionalProperties": false,
        "description": "A use of a plugin in a chat session: a :class:`smarter.apps.prompt.models.PromptPluginUsage`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "input_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptPluginUsage.input_text.",
            "title": "Input Text"
          },
          "plugin": {
            "$ref": "#/components/schemas/PluginApiPluginMeta",
            "description": "PromptPluginUsage.plugin: the plugin."
          },
          "prompt": {
            "$ref": "#/components/schemas/PromptHistoryApiSession",
            "description": "PromptPluginUsage.prompt: the chat session."
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "prompt",
          "plugin"
        ],
        "title": "PromptHistoryApiPluginUsage",
        "type": "object"
      },
      "PromptHistoryApiSession": {
        "additionalProperties": false,
        "description": "A chat session: one conversation with an LLMClient, a :class:`smarter.apps.prompt.models.Prompt`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "ip_address": {
            "description": "Prompt.ip_address: the client's IP address.",
            "title": "Ip Address",
            "type": "string"
          },
          "llmclient": {
            "description": "Prompt.llmclient: the LLMClient's id.",
            "title": "Llmclient",
            "type": "integer"
          },
          "name": {
            "default": "",
            "description": "MetaDataModel.name.",
            "title": "Name",
            "type": "string"
          },
          "session_key": {
            "description": "Prompt.session_key, which identifies the session.",
            "maxLength": 255,
            "title": "Session Key",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          },
          "url": {
            "description": "Prompt.url: the url that the session's chat was configured with.",
            "title": "Url",
            "type": "string"
          },
          "user_agent": {
            "description": "Prompt.user_agent: the client's user agent.",
            "maxLength": 255,
            "title": "User Agent",
            "type": "string"
          },
          "user_profile": {
            "description": "Prompt.user_profile: the user profile's id.",
            "title": "User Profile",
            "type": "integer"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "session_key",
          "ip_address",
          "user_agent",
          "url",
          "user_profile",
          "llmclient"
        ],
        "title": "PromptHistoryApiSession",
        "type": "object"
      },
      "PromptHistoryApiToolCall": {
        "additionalProperties": false,
        "description": "A tool call that the LLM made in a chat session: a :class:`smarter.apps.prompt.models.PromptToolCall`.",
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Created At"
          },
          "function_args": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.function_args.",
            "title": "Function Args"
          },
          "function_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.function_name.",
            "title": "Function Name"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "plugin": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.plugin: the PluginMeta's id, for a plugin.",
            "title": "Plugin"
          },
          "prompt": {
            "$ref": "#/components/schemas/PromptHistoryApiSession",
            "description": "PromptToolCall.prompt: the chat session."
          },
          "request": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonValue"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.request: the tool's input."
          },
          "response": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonValue"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "PromptToolCall.response: the tool's result."
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "prompt"
        ],
        "title": "PromptHistoryApiToolCall",
        "type": "object"
      },
      "ProviderApiModel": {
        "additionalProperties": false,
        "description": "A model of an LLM provider: a :class:`smarter.apps.provider.models.ProviderModel`, with its provider.",
        "properties": {
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Description"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isActive": {
            "title": "Isactive",
            "type": "boolean"
          },
          "isDefault": {
            "title": "Isdefault",
            "type": "boolean"
          },
          "isDeprecated": {
            "title": "Isdeprecated",
            "type": "boolean"
          },
          "isFlagged": {
            "title": "Isflagged",
            "type": "boolean"
          },
          "isSuspended": {
            "title": "Issuspended",
            "type": "boolean"
          },
          "maxCompletionTokens": {
            "minimum": 0,
            "title": "Maxcompletiontokens",
            "type": "integer"
          },
          "name": {
            "description": "The model's name, e.g. gpt-4o.",
            "title": "Name",
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/ProviderApiProvider"
          },
          "supportsAudioGeneration": {
            "title": "Supportsaudiogeneration",
            "type": "boolean"
          },
          "supportsAudioInput": {
            "title": "Supportsaudioinput",
            "type": "boolean"
          },
          "supportsCodeInterpreter": {
            "title": "Supportscodeinterpreter",
            "type": "boolean"
          },
          "supportsEmbedding": {
            "title": "Supportsembedding",
            "type": "boolean"
          },
          "supportsFineTuning": {
            "title": "Supportsfinetuning",
            "type": "boolean"
          },
          "supportsImageGeneration": {
            "title": "Supportsimagegeneration",
            "type": "boolean"
          },
          "supportsImageInput": {
            "title": "Supportsimageinput",
            "type": "boolean"
          },
          "supportsSearch": {
            "title": "Supportssearch",
            "type": "boolean"
          },
          "supportsStreaming": {
            "title": "Supportsstreaming",
            "type": "boolean"
          },
          "supportsSummarization": {
            "title": "Supportssummarization",
            "type": "boolean"
          },
          "supportsTextGeneration": {
            "title": "Supportstextgeneration",
            "type": "boolean"
          },
          "supportsTextInput": {
            "title": "Supportstextinput",
            "type": "boolean"
          },
          "supportsTools": {
            "title": "Supportstools",
            "type": "boolean"
          },
          "supportsTranslation": {
            "title": "Supportstranslation",
            "type": "boolean"
          },
          "temperature": {
            "title": "Temperature",
            "type": "number"
          },
          "topP": {
            "title": "Topp",
            "type": "number"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          }
        },
        "required": [
          "id",
          "provider",
          "name",
          "isDefault",
          "isActive",
          "isDeprecated",
          "isFlagged",
          "isSuspended",
          "maxCompletionTokens",
          "temperature",
          "topP",
          "supportsTextInput",
          "supportsTextGeneration",
          "supportsTranslation",
          "supportsSummarization",
          "supportsStreaming",
          "supportsTools",
          "supportsImageInput",
          "supportsAudioInput",
          "supportsEmbedding",
          "supportsFineTuning",
          "supportsSearch",
          "supportsCodeInterpreter",
          "supportsImageGeneration",
          "supportsAudioGeneration"
        ],
        "title": "ProviderApiModel",
        "type": "object"
      },
      "ProviderApiProvider": {
        "additionalProperties": false,
        "description": "An LLM provider: a :class:`smarter.apps.provider.models.Provider`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "apiKey": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SecretApiSecretRef"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The Secret of its api key, never the key."
          },
          "baseUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The base url of the provider's api.",
            "title": "Baseurl"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the Provider now.",
            "title": "Candelete",
            "type": "boolean"
          },
          "connectivityTestPath": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The path that tests the provider's api.",
            "title": "Connectivitytestpath"
          },
          "contactEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Contactemail"
          },
          "contactEmailVerified": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Contactemailverified"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "defaultModel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The model that LLMClients use by default.",
            "title": "Defaultmodel"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "docsUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Docsurl"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isActive": {
            "title": "Isactive",
            "type": "boolean"
          },
          "isDefault": {
            "title": "Isdefault",
            "type": "boolean"
          },
          "isDeprecated": {
            "title": "Isdeprecated",
            "type": "boolean"
          },
          "isFeatured": {
            "title": "Isfeatured",
            "type": "boolean"
          },
          "isFlagged": {
            "title": "Isflagged",
            "type": "boolean"
          },
          "isOfficialProvider": {
            "description": "Whether the platform's owner publishes the Provider.",
            "title": "Isofficialprovider",
            "type": "boolean"
          },
          "isSuspended": {
            "title": "Issuspended",
            "type": "boolean"
          },
          "isVerified": {
            "title": "Isverified",
            "type": "boolean"
          },
          "logo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url of the provider's logo.",
            "title": "Logo"
          },
          "manifestUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url of the Provider's manifest in the web console.",
            "title": "Manifesturl"
          },
          "name": {
            "description": "The Provider's name, e.g. openai.",
            "title": "Name",
            "type": "string"
          },
          "ownershipRequested": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The email of a pending ownership request.",
            "title": "Ownershiprequested"
          },
          "privacyPolicyUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Privacypolicyurl"
          },
          "ready": {
            "description": "Whether the Provider can be used.",
            "title": "Ready",
            "type": "boolean"
          },
          "rfc1034CompliantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name, as a DNS label.",
            "title": "Rfc1034Compliantname"
          },
          "status": {
            "description": "The Provider's verification status.",
            "enum": [
              "unverified",
              "verifying",
              "failed",
              "verified",
              "suspended",
              "deprecated"
            ],
            "title": "Status",
            "type": "string"
          },
          "supportEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Supportemail"
          },
          "supportEmailVerified": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Supportemailverified"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "termsOfServiceUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Termsofserviceurl"
          },
          "tosAccepted": {
            "description": "Whether the provider's terms of service were accepted.",
            "title": "Tosaccepted",
            "type": "boolean"
          },
          "tosAcceptedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Tosacceptedat"
          },
          "tosAcceptedBy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountApiUser"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Who accepted the terms of service."
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The Provider's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          },
          "websiteUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Websiteurl"
          }
        },
        "required": [
          "id",
          "name",
          "userProfile",
          "status",
          "ready",
          "isDefault",
          "isActive",
          "isVerified",
          "isFeatured",
          "isDeprecated",
          "isFlagged",
          "isSuspended",
          "isOfficialProvider",
          "tosAccepted",
          "canDelete"
        ],
        "title": "ProviderApiProvider",
        "type": "object"
      },
      "ProxyApiProxies": {
        "additionalProperties": false,
        "description": "The Proxies that the caller may use, by name.",
        "properties": {
          "proxies": {
            "items": {
              "$ref": "#/components/schemas/ProxyApiProxy"
            },
            "title": "Proxies",
            "type": "array"
          }
        },
        "required": [
          "proxies"
        ],
        "title": "ProxyApiProxies",
        "type": "object"
      },
      "ProxyApiProxy": {
        "additionalProperties": false,
        "description": "A Proxy that the caller may use: its name, provider and urls.",
        "properties": {
          "allowedPaths": {
            "description": "Glob patterns of the paths that it forwards. Empty means all.",
            "items": {
              "type": "string"
            },
            "title": "Allowedpaths",
            "type": "array"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "isActive": {
            "description": "Whether it forwards requests.",
            "title": "Isactive",
            "type": "boolean"
          },
          "name": {
            "description": "The Proxy's name.",
            "title": "Name",
            "type": "string"
          },
          "provider": {
            "description": "The name of its Provider.",
            "title": "Provider",
            "type": "string"
          },
          "upstreamUrl": {
            "description": "The provider's api, to which the Proxy forwards.",
            "title": "Upstreamurl",
            "type": "string"
          },
          "url": {
            "description": "The Proxy's url: send the provider's requests here, with a Smarter api key.",
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "name",
          "provider",
          "url",
          "upstreamUrl",
          "allowedPaths",
          "isActive"
        ],
        "title": "ProxyApiProxy",
        "type": "object"
      },
      "RequestHeader": {
        "description": "Model for storing HTTP request headers.",
        "properties": {
          "name": {
            "description": "The name of the HTTP header.",
            "title": "Name",
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "description": "The value of the HTTP header.",
            "title": "Value"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "title": "RequestHeader",
        "type": "object"
      },
      "RestApiErrorResponse": {
        "additionalProperties": true,
        "description": "The body of an error response of the REST api's views: Django REST framework's ``{\"detail\": ...}``.\n\ne.g. a 404 for a row that does not exist, or a 403 for a user who may not use the view.",
        "properties": {
          "detail": {
            "description": "A human-readable description of the error.",
            "title": "Detail",
            "type": "string"
          }
        },
        "required": [
          "detail"
        ],
        "title": "RestApiErrorResponse",
        "type": "object"
      },
      "SAMAccount": {
        "description": "Smarter API Manifest - Account",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Account",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMAccountMetadata",
            "description": "Account.metadata[obj]: Required, the Account metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMAccountSpec",
            "description": "Account.spec[obj]: Required, the Account specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMAccountStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.status[obj]: Optional, Read-only. Stateful status information about the Account."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMAccount",
        "type": "object"
      },
      "SAMAccountMetadata": {
        "description": "Smarter API Account Manifest - Metadata class.",
        "properties": {
          "accountNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.metadata.accountNumber[str]. Your preassigned 12-digit account number for your Smarter Account in the format '####-####-####'. Read only.",
            "title": "Accountnumber"
          },
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMAccountMetadata",
        "type": "object"
      },
      "SAMAccountSpec": {
        "description": "Smarter API Account Manifest Account.spec",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMAccountSpecConfig",
            "description": "Account.spec.config[object]. The configuration for the Account."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMAccountSpec",
        "type": "object"
      },
      "SAMAccountSpecConfig": {
        "description": "Smarter API Account Manifest Account.spec.config",
        "properties": {
          "address1": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.spec.configuration.address1[str]. The primary address for the Account.",
            "title": "Address1"
          },
          "address2": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.spec.configuration.address2[str]. Optional. The secondary address for the Account.",
            "title": "Address2"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.spec.configuration.city[str]. The city for the Account.",
            "title": "City"
          },
          "companyName": {
            "description": "Account.spec.configuration.companyName[str]. The legal entity of your Smarter Account for invoicing and legal correspondence.",
            "title": "Companyname",
            "type": "string"
          },
          "country": {
            "default": "US",
            "description": "Account.spec.configuration.country[str]. The ISO 3166 country code for the Account. Default: USA.",
            "title": "Country",
            "type": "string"
          },
          "currency": {
            "default": "USD",
            "description": "Account.spec.configuration.currency[str]. The primary ISO 4217 currency for the Account. Default: USD.",
            "title": "Currency",
            "type": "string"
          },
          "language": {
            "default": "en-US",
            "description": "Account.spec.configuration.language[str]. The primary BCP 47 language tag for the Account. Default: en-US.",
            "title": "Language",
            "type": "string"
          },
          "phoneNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.spec.configuration.phoneNumber[str]. The primary phone number for the Account.",
            "title": "Phonenumber"
          },
          "postalCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.spec.configuration.postalCode[str]. The postal code for the Account.",
            "title": "Postalcode"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Account.spec.configuration.state[str]. The state for the Account.",
            "title": "State"
          },
          "timezone": {
            "default": "America/New_York",
            "description": "Account.spec.configuration.timezone[str]. The primary IANA timezone for the Account. Default: America/New_York.",
            "title": "Timezone",
            "type": "string"
          }
        },
        "required": [
          "companyName"
        ],
        "title": "SAMAccountSpecConfig",
        "type": "object"
      },
      "SAMAccountStatus": {
        "description": "Smarter API Account Manifest - Status class.",
        "properties": {
          "adminAccount": {
            "description": "Account.status.adminAccount: The designated Smarter admin user for this Account. Read only.",
            "title": "Adminaccount",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "adminAccount"
        ],
        "title": "SAMAccountStatus",
        "type": "object"
      },
      "SAMApiConnection": {
        "description": "Smarter API Connection Manifest - ApiConnection Model",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "ApiConnection",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMConnectionCommonMetadata",
            "description": "Connection.metadata[obj]: Required, the Connection metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMApiConnectionSpec",
            "description": "ApiConnection.spec[obj]: Required, the ApiConnection specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMConnectionCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Connection.status[obj]: Optional, Read-only. Stateful status information about the Connection."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMApiConnection",
        "type": "object"
      },
      "SAMApiConnectionSpec": {
        "description": "Smarter API Api Connection Manifest ApiConnection.spec",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/ApiConnection",
            "description": "ApiConnection.spec.selector[obj]: the selector logic to use for the ApiConnection"
          }
        },
        "required": [
          "connection"
        ],
        "title": "SAMApiConnectionSpec",
        "type": "object"
      },
      "SAMApiPlugin": {
        "description": "Smarter API Manifest - ApiPlugin Model.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "ApiPlugin",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPluginCommonMetadata",
            "description": "Plugin.metadata[obj]: Required, the Plugin metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMApiPluginSpec",
            "description": "ApiPlugin.spec[obj]: Required, the ApiPlugin specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPluginCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.status[obj]: Optional, Read-only. Stateful status information about the Plugin."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMApiPlugin",
        "type": "object"
      },
      "SAMApiPluginSpec": {
        "description": "Smarter API Manifest ApiConnection.spec.",
        "properties": {
          "apiData": {
            "$ref": "#/components/schemas/ApiData",
            "description": "ApiPlugin.spec.selector[obj]: the ApiData to use for the ApiPlugin"
          },
          "connection": {
            "description": "ApiPlugin.spec.selector[obj]: the name of an existing ApiConnection to use for the ApiPlugin",
            "title": "Connection",
            "type": "string"
          },
          "prompt": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecPrompt",
            "description": "Plugin.spec.prompt[obj]: the LLM prompt engineering to apply to the Plugin"
          },
          "selector": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecSelector",
            "description": "Plugin.spec.selector[obj]: the selector logic to use for the Plugin"
          }
        },
        "required": [
          "selector",
          "prompt",
          "connection",
          "apiData"
        ],
        "title": "SAMApiPluginSpec",
        "type": "object"
      },
      "SAMBudget": {
        "description": "Smarter API Manifest - Budget.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Budget",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMBudgetMetadata",
            "description": "Budget.metadata[obj]: Required, the Budget metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMBudgetSpec",
            "description": "Budget.spec[obj]: Required, the Budget specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMBudgetStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.status[obj]: Optional, Read-only. Stateful status information about the Budget."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMBudget",
        "type": "object"
      },
      "SAMBudgetMetadata": {
        "description": "Smarter API Budget Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMBudgetMetadata",
        "type": "object"
      },
      "SAMBudgetSpec": {
        "description": "Smarter API Budget Manifest Budget.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMBudgetSpecConfig",
            "description": "Budget.spec.config[object]. The limits of the Budget."
          },
          "resources": {
            "description": "Budget.spec.resources[list]. The resources that the Budget is enforced on. Resources that are removed from the list are detached.",
            "items": {
              "$ref": "#/components/schemas/SAMBudgetSpecResource"
            },
            "maxItems": 1000,
            "title": "Resources",
            "type": "array"
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMBudgetSpec",
        "type": "object"
      },
      "SAMBudgetSpecConfig": {
        "description": "Smarter API Budget Manifest Budget.spec.config: the budget's limits.",
        "properties": {
          "absoluteLimit": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              }
            ],
            "default": "0",
            "description": "Budget.spec.config.absoluteLimit: the most that may be spent in total, from when the budget is attached. 0 means no limit.",
            "title": "Absolutelimit"
          },
          "action": {
            "default": "block",
            "description": "Budget.spec.config.action: block further charges when a limit is reached, or only warn.",
            "enum": [
              "block",
              "warn"
            ],
            "title": "Action",
            "type": "string"
          },
          "duration": {
            "default": 0,
            "description": "Budget.spec.config.duration: the billing periods, from when the budget is attached, after which it no longer applies. 0 means never.",
            "minimum": 0,
            "title": "Duration",
            "type": "integer"
          },
          "message": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.spec.config.message: what people are told when the budget blocks their request. Defaults to a description of the limit that was reached.",
            "title": "Message"
          },
          "period": {
            "default": "month",
            "description": "Budget.spec.config.period: the billing period of periodicLimit and duration.",
            "enum": [
              "hour",
              "day",
              "week",
              "month"
            ],
            "title": "Period",
            "type": "string"
          },
          "periodicLimit": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              }
            ],
            "default": "0",
            "description": "Budget.spec.config.periodicLimit: the most that may be spent in a billing period. 0 means no limit.",
            "title": "Periodiclimit"
          },
          "unit": {
            "default": "cost",
            "description": "Budget.spec.config.unit: what the limits measure: cost in USD, or total tokens.",
            "enum": [
              "cost",
              "tokens"
            ],
            "title": "Unit",
            "type": "string"
          },
          "warningThreshold": {
            "default": 80,
            "description": "Budget.spec.config.warningThreshold: the percentage of a limit at which a warning is sent. 0 means never.",
            "maximum": 100,
            "minimum": 0,
            "title": "Warningthreshold",
            "type": "integer"
          }
        },
        "title": "SAMBudgetSpecConfig",
        "type": "object"
      },
      "SAMBudgetSpecResource": {
        "description": "Smarter API Budget Manifest Budget.spec.resources[]: a resource that the budget is enforced on.\n\nEither kind and name, with an optional accountNumber, or a recordLocator.",
        "properties": {
          "accountNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.spec.resources.accountNumber: the account that the resource belongs to. Defaults to your own.",
            "title": "Accountnumber"
          },
          "kind": {
            "anyOf": [
              {
                "enum": [
                  "Account",
                  "User",
                  "ApiConnection",
                  "SqlConnection",
                  "LLMClient",
                  "LLMHost",
                  "LLMHostCompute",
                  "MCPClient",
                  "Orchestrator",
                  "Provider",
                  "Proxy",
                  "Vectorsearch",
                  "ApiPlugin",
                  "SkillPlugin",
                  "SqlPlugin",
                  "StaticPlugin",
                  "WebsearchPlugin",
                  "ImageSearchPlugin"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.spec.resources.kind: the resource's manifest kind, e.g. LLMClient.",
            "title": "Kind"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.spec.resources.name: the resource's name. For an Account, its account number; for a User, the username.",
            "title": "Name"
          },
          "recordLocator": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.spec.resources.recordLocator: any resource's record locator, e.g. llmclient-rc2x, in place of kind and name.",
            "title": "Recordlocator"
          }
        },
        "title": "SAMBudgetSpecResource",
        "type": "object"
      },
      "SAMBudgetStatus": {
        "description": "Smarter API Budget Manifest - Status class.\n\nRead only.",
        "properties": {
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "resources": {
            "description": "Budget.status.resources: the budget versus the actual spending of each resource. Read only.",
            "items": {
              "$ref": "#/components/schemas/SAMBudgetStatusResource"
            },
            "title": "Resources",
            "type": "array"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified"
        ],
        "title": "SAMBudgetStatus",
        "type": "object"
      },
      "SAMBudgetStatusResource": {
        "description": "The budget versus the actual spending of one of the budget's resources.\n\nRead only.",
        "properties": {
          "absoluteActual": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              }
            ],
            "description": "Budget.status.resources.absoluteActual: spending since startDate.",
            "title": "Absoluteactual"
          },
          "absolutePercent": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.status.resources.absolutePercent: absoluteActual, as a percentage of the limit.",
            "title": "Absolutepercent"
          },
          "expiresAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.status.resources.expiresAt: when the budget's duration ends.",
            "title": "Expiresat"
          },
          "isActive": {
            "description": "Budget.status.resources.isActive: whether the budget is enforced on it.",
            "title": "Isactive",
            "type": "boolean"
          },
          "isLocked": {
            "description": "Budget.status.resources.isLocked: whether the budget refuses further charges.",
            "title": "Islocked",
            "type": "boolean"
          },
          "lockReason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.status.resources.lockReason: which limit was reached.",
            "title": "Lockreason"
          },
          "periodicActual": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              }
            ],
            "description": "Budget.status.resources.periodicActual: spending this billing period.",
            "title": "Periodicactual"
          },
          "periodicPercent": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Budget.status.resources.periodicPercent: periodicActual, as a percentage of the limit.",
            "title": "Periodicpercent"
          },
          "recordLocator": {
            "description": "Budget.status.resources.recordLocator: the resource's record locator.",
            "title": "Recordlocator",
            "type": "string"
          },
          "startDate": {
            "description": "Budget.status.resources.startDate: when the budget was attached.",
            "format": "date-time",
            "title": "Startdate",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "isActive",
          "startDate",
          "periodicActual",
          "absoluteActual",
          "isLocked"
        ],
        "title": "SAMBudgetStatusResource",
        "type": "object"
      },
      "SAMConnectionCommonMetadata": {
        "description": "Smarter API Connection Manifest - common Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMConnectionCommonMetadata",
        "type": "object"
      },
      "SAMConnectionCommonStatus": {
        "description": "Smarter API Connection Manifest - Status class.",
        "properties": {
          "account_number": {
            "description": "Connection.status.account_number: The account owner of this Connection. Read only.",
            "title": "Account Number",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "Connection.status.username: The Smarter user who created this Connection. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "account_number",
          "username"
        ],
        "title": "SAMConnectionCommonStatus",
        "type": "object"
      },
      "SAMCustomDomain": {
        "description": "Smarter API Manifest - CustomDomain.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "CustomDomain",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMCustomDomainMetadata",
            "description": "CustomDomain.metadata[obj]: Required, the CustomDomain metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMCustomDomainSpec",
            "description": "CustomDomain.spec[obj]: Required, the CustomDomain specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMCustomDomainStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "CustomDomain.status[obj]: Optional, Read-only. Stateful status information about the CustomDomain."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMCustomDomain",
        "type": "object"
      },
      "SAMCustomDomainMetadata": {
        "description": "Smarter API CustomDomain Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMCustomDomainMetadata",
        "type": "object"
      },
      "SAMCustomDomainSpec": {
        "description": "Smarter API CustomDomain Manifest - CustomDomain.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMCustomDomainSpecConfig",
            "description": "CustomDomain.spec.config[object]. Required. The configuration of the CustomDomain."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMCustomDomainSpec",
        "type": "object"
      },
      "SAMCustomDomainSpecConfig": {
        "description": "Smarter API CustomDomain Manifest - CustomDomain.spec.config.",
        "properties": {
          "domainName": {
            "description": "CustomDomain.spec.config.domainName[str]. Required. The domain name, e.g. 'llmclients.example.com'. It cannot be changed once the domain has been registered.",
            "title": "Domainname",
            "type": "string"
          }
        },
        "required": [
          "domainName"
        ],
        "title": "SAMCustomDomainSpecConfig",
        "type": "object"
      },
      "SAMCustomDomainStatus": {
        "description": "Smarter API CustomDomain Manifest - Status class.\n\nRead only. Besides ownership, it reports the domain's AWS Route53 hosted zone, whether\nthe domain is verified, and its DNS records. The LLMClient that uses it is reported in\n``dependencies``.",
        "properties": {
          "accountNumber": {
            "description": "CustomDomain.status.accountNumber: The account owner of this CustomDomain. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "awsHostedZoneId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "CustomDomain.status.awsHostedZoneId: The AWS Route53 hosted zone of this CustomDomain, once it is registered with smarter deploy. Read only.",
            "title": "Awshostedzoneid"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "dnsRecords": {
            "description": "CustomDomain.status.dnsRecords: The DNS records of this CustomDomain. Read only.",
            "items": {
              "type": "string"
            },
            "title": "Dnsrecords",
            "type": "array"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "CustomDomain.status.username: The Smarter user who created this CustomDomain. Read only.",
            "title": "Username",
            "type": "string"
          },
          "verificationMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "CustomDomain.status.verificationMessage: Why the domain is not verified yet, or why its verification failed. Read only.",
            "title": "Verificationmessage"
          },
          "verificationStatus": {
            "default": "Not Verified",
            "description": "CustomDomain.status.verificationStatus: Not Verified, Verifying, Verified or Failed. The domain is Verified when its NS records are delegated to its hosted zone, and its TLS certificate is issued. Read only.",
            "title": "Verificationstatus",
            "type": "string"
          },
          "verifiedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "CustomDomain.status.verifiedAt: When the domain was verified. Read only.",
            "title": "Verifiedat"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMCustomDomainStatus",
        "type": "object"
      },
      "SAMDependency": {
        "description": "A resource that depends on the resource that a manifest describes.",
        "properties": {
          "kind": {
            "description": "kind[String]: The SAM kind of the resource that depends on this resource, e.g. LLMClient. Read only.",
            "title": "Kind",
            "type": "string"
          },
          "name": {
            "description": "name[String]: The name of the resource that depends on this resource. Read only.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "name"
        ],
        "title": "SAMDependency",
        "type": "object"
      },
      "SAMGuardrail": {
        "description": "Smarter API Manifest - Guardrail.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Guardrail",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMGuardrailMetadata",
            "description": "Guardrail.metadata[obj]: Required, the Guardrail metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMGuardrailSpec",
            "description": "Guardrail.spec[obj]: Required, the Guardrail specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMGuardrailStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.status[obj]: Optional, Read-only. Stateful status information about the Guardrail."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMGuardrail",
        "type": "object"
      },
      "SAMGuardrailMetadata": {
        "description": "Smarter API Guardrail Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMGuardrailMetadata",
        "type": "object"
      },
      "SAMGuardrailSpec": {
        "description": "Smarter API Guardrail Manifest Guardrail.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMGuardrailSpecConfig",
            "description": "Guardrail.spec.config[object]. The configuration for the Guardrail."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMGuardrailSpec",
        "type": "object"
      },
      "SAMGuardrailSpecConfig": {
        "description": "Smarter API Guardrail Manifest Guardrail.spec.config.",
        "properties": {
          "action": {
            "description": "Guardrail.spec.config.action[str]: what the guardrail does when it triggers. One of: ['log', 'flag', 'redact', 'transform', 'block', 'escalate'].",
            "enum": [
              "log",
              "flag",
              "redact",
              "transform",
              "block",
              "escalate"
            ],
            "title": "Action",
            "type": "string"
          },
          "caseSensitive": {
            "default": false,
            "description": "Guardrail.spec.config.caseSensitive[bool]: whether the keyword strategy is case sensitive.",
            "title": "Casesensitive",
            "type": "boolean"
          },
          "categories": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Guardrail.spec.config.categories[list]: the moderation strategy's categories. Empty means all. Any of: ['harassment', 'harassment/threatening', 'hate', 'hate/threatening', 'illicit', 'illicit/violent', 'self-harm', 'self-harm/intent', 'self-harm/instructions', 'sexual', 'sexual/minors', 'violence', 'violence/graphic'].",
            "title": "Categories"
          },
          "category": {
            "default": "custom",
            "description": "Guardrail.spec.config.category[str]: the risk the guardrail addresses. One of: ['pii', 'secrets', 'prompt_injection', 'jailbreak', 'toxicity', 'self_harm', 'hallucination', 'off_topic', 'compliance', 'formatting', 'custom'].",
            "enum": [
              "pii",
              "secrets",
              "prompt_injection",
              "jailbreak",
              "toxicity",
              "self_harm",
              "hallucination",
              "off_topic",
              "compliance",
              "formatting",
              "custom"
            ],
            "title": "Category",
            "type": "string"
          },
          "detectors": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Guardrail.spec.config.detectors[list]: the detector strategy's detectors. Any of: ['credit_card', 'us_ssn', 'email', 'phone_number', 'ip_address', 'iban', 'aws_access_key', 'private_key', 'api_key', 'jwt', 'password_assignment'].",
            "title": "Detectors"
          },
          "failClosed": {
            "default": false,
            "description": "Guardrail.spec.config.failClosed[bool]: if true, block when the check itself fails, e.g. because the LLM provider is unavailable. If false, the failure is recorded, and the prompt continues.",
            "title": "Failclosed",
            "type": "boolean"
          },
          "flags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Guardrail.spec.config.flags[list]: the regex strategy's flags. Any of: ['IGNORECASE', 'MULTILINE', 'DOTALL'].",
            "title": "Flags"
          },
          "isActive": {
            "default": true,
            "description": "Guardrail.spec.config.isActive[bool]: whether the guardrail runs.",
            "title": "Isactive",
            "type": "boolean"
          },
          "judgePrompt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.judgePrompt[str]: the llm_judge strategy's prompt, with a {text} placeholder for the text to judge. Any other braces must be doubled, e.g. {{ and }}.",
            "title": "Judgeprompt"
          },
          "keywords": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Guardrail.spec.config.keywords[list]: the keyword strategy's words and phrases.",
            "title": "Keywords"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.message[str]: what block returns to the user, instead of the LLM's reply.",
            "title": "Message"
          },
          "mode": {
            "default": "enforce",
            "description": "Guardrail.spec.config.mode[str]: enforce, to take the action, or monitor, to only record what the action would have been.",
            "enum": [
              "enforce",
              "monitor"
            ],
            "title": "Mode",
            "type": "string"
          },
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.model[str]: the model of the semantic, moderation and llm_judge strategies.",
            "title": "Model"
          },
          "pattern": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.pattern[str]: the regex strategy's regular expression.",
            "title": "Pattern"
          },
          "priority": {
            "default": 100,
            "description": "Guardrail.spec.config.priority[int]: the order in which guardrails run. Lower runs first.",
            "minimum": 0,
            "title": "Priority",
            "type": "integer"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.provider[str]: the name of the Smarter LLM Provider that the semantic, moderation and llm_judge strategies call. Defaults to openai.",
            "title": "Provider"
          },
          "referenceTexts": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Guardrail.spec.config.referenceTexts[list]: the semantic strategy's examples of what to detect.",
            "title": "Referencetexts"
          },
          "replacement": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.replacement[str]: what redact and transform replace each match with. Defaults to [REDACTED], which an empty replacement also means. {label} is replaced with what matched, e.g. credit_card. For the regex strategy, transform may refer to groups, e.g. \\1.",
            "title": "Replacement"
          },
          "severity": {
            "default": 3,
            "description": "Guardrail.spec.config.severity[int]: from 1 (low) to 5 (critical), for reporting and review.",
            "maximum": 5,
            "minimum": 1,
            "title": "Severity",
            "type": "integer"
          },
          "stage": {
            "description": "Guardrail.spec.config.stage[str]: when the guardrail runs. One of: ['input', 'output', 'both'].",
            "enum": [
              "input",
              "output",
              "both"
            ],
            "title": "Stage",
            "type": "string"
          },
          "strategy": {
            "description": "Guardrail.spec.config.strategy[str]: how the guardrail detects. One of: ['regex', 'keyword', 'detector', 'semantic', 'moderation', 'llm_judge'].",
            "enum": [
              "regex",
              "keyword",
              "detector",
              "semantic",
              "moderation",
              "llm_judge"
            ],
            "title": "Strategy",
            "type": "string"
          },
          "threshold": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.spec.config.threshold[float]: the minimum confidence, from 0 to 1, at which the semantic, moderation and llm_judge strategies trigger. Defaults to 0.8.",
            "title": "Threshold"
          },
          "wholeWord": {
            "default": true,
            "description": "Guardrail.spec.config.wholeWord[bool]: whether the keyword strategy matches whole words only.",
            "title": "Wholeword",
            "type": "boolean"
          }
        },
        "required": [
          "stage",
          "strategy",
          "action"
        ],
        "title": "SAMGuardrailSpecConfig",
        "type": "object"
      },
      "SAMGuardrailStatus": {
        "description": "Smarter API Guardrail Manifest - Status class.\n\nRead only. Besides ownership, it reports the guardrail's events of the last 30 days. The\nLLMClients that use it are reported in ``dependencies``.",
        "properties": {
          "accountNumber": {
            "description": "Guardrail.status.account_number: The account owner of this Guardrail. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "blocked": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.status.blocked: how many prompts this Guardrail blocked in the last 30 days. Read only.",
            "title": "Blocked"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "errors": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.status.errors: how many times this Guardrail failed to run in the last 30 days. Read only.",
            "title": "Errors"
          },
          "lastTriggered": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.status.lastTriggered: when this Guardrail last triggered. Read only.",
            "title": "Lasttriggered"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "triggered": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Guardrail.status.triggered: how many times this Guardrail triggered in the last 30 days. Read only.",
            "title": "Triggered"
          },
          "username": {
            "description": "Guardrail.status.username: The Smarter user who created this Guardrail. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMGuardrailStatus",
        "type": "object"
      },
      "SAMImageSearchPlugin": {
        "description": "Smarter API Manifest - ImageSearchPlugin Model.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "ImageSearchPlugin",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPluginCommonMetadata",
            "description": "Plugin.metadata[obj]: Required, the Plugin metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMImageSearchPluginSpec",
            "description": "ImageSearchPlugin.spec[obj]: Required, the ImageSearchPlugin specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPluginCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.status[obj]: Optional, Read-only. Stateful status information about the Plugin."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMImageSearchPlugin",
        "type": "object"
      },
      "SAMImageSearchPluginSpec": {
        "description": "Smarter API Manifest - ImageSearchPlugin.spec.",
        "properties": {
          "imageSearchData": {
            "$ref": "#/components/schemas/ImageSearchData",
            "description": "ImageSearchPlugin.spec.imageSearchData[obj]: the image search configuration of the ImageSearchPlugin."
          },
          "prompt": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecPrompt",
            "description": "Plugin.spec.prompt[obj]: the LLM prompt engineering to apply to the Plugin"
          },
          "selector": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecSelector",
            "description": "Plugin.spec.selector[obj]: the selector logic to use for the Plugin"
          }
        },
        "required": [
          "selector",
          "prompt"
        ],
        "title": "SAMImageSearchPluginSpec",
        "type": "object"
      },
      "SAMJournalApiEntry": {
        "additionalProperties": false,
        "description": "A journal entry, as the journal's REST api returns it by its key: with its request and response documents.\n\nIt is the output of :class:`smarter.lib.journal.serializers.SAMJournalSerializer`, in camelCase.\nThe request document holds the caller's headers and cookies, including its api key.",
        "properties": {
          "command": {
            "description": "SAMJournal.command.",
            "enum": [
              "apply",
              "prompt",
              "chat_config",
              "delete",
              "deploy",
              "describe",
              "get",
              "journal",
              "logs",
              "example_manifest",
              "status",
              "json_schema",
              "version",
              "undeploy",
              "validate",
              "whoami",
              "resources"
            ],
            "title": "Command",
            "type": "string"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SAMJournal.created_at.",
            "title": "Createdat"
          },
          "key": {
            "description": "SAMJournal.key, the entry's primary key.",
            "pattern": "^[a-f0-9]{64}$",
            "title": "Key",
            "type": "string"
          },
          "request": {
            "$ref": "#/components/schemas/JsonValue",
            "description": "SAMJournal.request: the serialized http request."
          },
          "response": {
            "$ref": "#/components/schemas/JsonValue",
            "description": "SAMJournal.response: the response's JSON body."
          },
          "statusCode": {
            "description": "SAMJournal.status_code: the http status.",
            "maximum": 65535,
            "minimum": 0,
            "title": "Statuscode",
            "type": "integer"
          },
          "thing": {
            "description": "SAMJournal.thing.",
            "enum": [
              "Account",
              "ApiConnection",
              "ApiPlugin",
              "SmarterAuthToken",
              "Budget",
              "CustomDomain",
              "Guardrail",
              "ImageSearchPlugin",
              "LLMClient",
              "MCPClient",
              "Orchestrator",
              "Prompt",
              "ChatConfig",
              "Proxy",
              "Provider",
              "Secret",
              "SkillPlugin",
              "SqlConnection",
              "SqlPlugin",
              "Plugin",
              "User",
              "Vectorsearch",
              "Vectorstore",
              "WebsearchPlugin"
            ],
            "title": "Thing",
            "type": "string"
          },
          "user": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The username of the caller, or null for an anonymous request.",
            "title": "User"
          }
        },
        "required": [
          "key",
          "thing",
          "command",
          "statusCode",
          "request",
          "response"
        ],
        "title": "SAMJournalApiEntry",
        "type": "object"
      },
      "SAMJournalApiEntrySummary": {
        "additionalProperties": false,
        "description": "A journal entry, as the journal's list returns it: without its request and response documents.\n\nIt is the output of :class:`smarter.lib.journal.serializers.SAMJournalMiniSerializer`, in\ncamelCase. Unlike :class:`SAMJournalApiOrmModel`, its ``user`` is the username.",
        "properties": {
          "command": {
            "description": "SAMJournal.command.",
            "enum": [
              "apply",
              "prompt",
              "chat_config",
              "delete",
              "deploy",
              "describe",
              "get",
              "journal",
              "logs",
              "example_manifest",
              "status",
              "json_schema",
              "version",
              "undeploy",
              "validate",
              "whoami",
              "resources"
            ],
            "title": "Command",
            "type": "string"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SAMJournal.created_at.",
            "title": "Createdat"
          },
          "key": {
            "description": "SAMJournal.key, the entry's primary key.",
            "pattern": "^[a-f0-9]{64}$",
            "title": "Key",
            "type": "string"
          },
          "statusCode": {
            "description": "SAMJournal.status_code: the http status.",
            "maximum": 65535,
            "minimum": 0,
            "title": "Statuscode",
            "type": "integer"
          },
          "thing": {
            "description": "SAMJournal.thing.",
            "enum": [
              "Account",
              "ApiConnection",
              "ApiPlugin",
              "SmarterAuthToken",
              "Budget",
              "CustomDomain",
              "Guardrail",
              "ImageSearchPlugin",
              "LLMClient",
              "MCPClient",
              "Orchestrator",
              "Prompt",
              "ChatConfig",
              "Proxy",
              "Provider",
              "Secret",
              "SkillPlugin",
              "SqlConnection",
              "SqlPlugin",
              "Plugin",
              "User",
              "Vectorsearch",
              "Vectorstore",
              "WebsearchPlugin"
            ],
            "title": "Thing",
            "type": "string"
          },
          "user": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The username of the caller, or null for an anonymous request.",
            "title": "User"
          }
        },
        "required": [
          "key",
          "thing",
          "command",
          "statusCode"
        ],
        "title": "SAMJournalApiEntrySummary",
        "type": "object"
      },
      "SAMJournalApiEnvelope": {
        "additionalProperties": true,
        "description": "The fields that every journaled response adds beside the view's own data.",
        "properties": {
          "api": {
            "default": "smarter.sh/v1",
            "description": "The api version, e.g. \"smarter.sh/v1\".",
            "title": "Api",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMJournalApiMetadata",
            "description": "The journal's command and thing, and its entry's key."
          }
        },
        "required": [
          "metadata"
        ],
        "title": "SAMJournalApiEnvelope",
        "type": "object"
      },
      "SAMJournalApiErrorBody": {
        "additionalProperties": true,
        "description": "The ``error`` of a journaled error response: the same shape for every error of the cli and the other journaled apis.\n\nThe field names are the values of :class:`smarter.lib.journal.enum.SmarterJournalApiResponseErrorKeys`.",
        "properties": {
          "args": {
            "$ref": "#/components/schemas/JsonValue",
            "description": "The exception's arguments, or the request's url."
          },
          "cause": {
            "description": "The exception's cause, e.g. 'ValueError: ...', or 'Python Exception'.",
            "title": "Cause",
            "type": "string"
          },
          "command": {
            "description": "The journal's command, e.g. describe.",
            "title": "Command",
            "type": "string"
          },
          "context": {
            "description": "The exception's context, or the response's thing and command.",
            "title": "Context",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A human-readable description of the error.",
            "title": "Description"
          },
          "errorClass": {
            "description": "The name of the exception's class, e.g. SAMBrokerErrorNotFound.",
            "title": "Errorclass",
            "type": "string"
          },
          "stacktrace": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The stack trace. Left out of the responses that a browser may receive.",
            "title": "Stacktrace"
          },
          "status": {
            "description": "The http status.",
            "title": "Status",
            "type": "integer"
          },
          "thing": {
            "description": "The journal's thing, e.g. Guardrail.",
            "title": "Thing",
            "type": "string"
          }
        },
        "required": [
          "errorClass",
          "status",
          "args",
          "cause",
          "context",
          "thing",
          "command"
        ],
        "title": "SAMJournalApiErrorBody",
        "type": "object"
      },
      "SAMJournalApiErrorResponse": {
        "additionalProperties": true,
        "description": "The body of a journaled error response.\n\n:class:`SAMJournalApiEnvelope`'s ``api`` and ``metadata`` are added beside ``error``.",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/SAMJournalApiErrorBody"
          }
        },
        "required": [
          "error"
        ],
        "title": "SAMJournalApiErrorResponse",
        "type": "object"
      },
      "SAMJournalApiMetadata": {
        "additionalProperties": true,
        "description": "The ``metadata`` of a journaled response: its command and thing, and, when the journal is enabled, the key of its journal entry.\n\n``command`` and ``thing`` are the strings of the values that the view passed, which may be\n``\"None\"`` when it passed none, so they are not limited to the journal's choices.",
        "properties": {
          "command": {
            "description": "The journal's command, e.g. apply.",
            "title": "Command",
            "type": "string"
          },
          "key": {
            "anyOf": [
              {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The key of the response's journal entry. Absent while the journal is disabled, or if the entry could not be saved.",
            "title": "Key"
          },
          "thing": {
            "description": "The journal's thing, e.g. Guardrail.",
            "title": "Thing",
            "type": "string"
          }
        },
        "required": [
          "command",
          "thing"
        ],
        "title": "SAMJournalApiMetadata",
        "type": "object"
      },
      "SAMJournalApiPage": {
        "additionalProperties": false,
        "description": "One page of the journal's entries, newest first unless sorted, and a description of the page.",
        "properties": {
          "objects": {
            "description": "The page's entries.",
            "items": {
              "$ref": "#/components/schemas/SAMJournalApiEntrySummary"
            },
            "title": "Objects",
            "type": "array"
          },
          "pagination": {
            "$ref": "#/components/schemas/ListViewPagination",
            "description": "The page, and the list's search and order."
          }
        },
        "required": [
          "objects",
          "pagination"
        ],
        "title": "SAMJournalApiPage",
        "type": "object"
      },
      "SAMKind": {
        "description": "A SAM manifest's kind.",
        "enum": [
          "Account",
          "ApiConnection",
          "ApiPlugin",
          "Budget",
          "CustomDomain",
          "Guardrail",
          "ImageSearchPlugin",
          "LLMClient",
          "LLMHost",
          "LLMHostCompute",
          "MCPClient",
          "Orchestrator",
          "Plugin",
          "Prompt",
          "Provider",
          "Proxy",
          "Secret",
          "SkillPlugin",
          "SmarterAuthToken",
          "SqlConnection",
          "SqlPlugin",
          "User",
          "Vectorsearch",
          "Vectorstore",
          "WebsearchPlugin"
        ],
        "type": "string"
      },
      "SAMLLMClient": {
        "description": "Smarter API Manifest - LLMClient.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "LLMClient",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMLLMClientMetadata",
            "description": "LLMClient.metadata[obj]: Required, the LLMClient metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMLLMClientSpec",
            "description": "LLMClient.spec[obj]: Required, the LLMClient specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.status[obj]: Optional, Read-only. Stateful status information about the LLMClient."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMLLMClient",
        "type": "object"
      },
      "SAMLLMClientCustomDomain": {
        "description": "Smarter API LLMClient Manifest LLMClient.spec.config.customDomain.",
        "properties": {
          "aws_hosted_zone_id": {
            "description": "LLMClient.spec.configuration.customDomain.aws_hosted_zone_id[str]. Required. The AWS hosted zone ID for this domain name. Example: Z08678681MEAGNEVHT5I8",
            "title": "Aws Hosted Zone Id",
            "type": "string"
          },
          "domain_name": {
            "description": "LLMClient.spec.configuration.customDomain.domain_name[str]. Required. The domain name. Example: example.com",
            "title": "Domain Name",
            "type": "string"
          }
        },
        "required": [
          "aws_hosted_zone_id",
          "domain_name"
        ],
        "title": "SAMLLMClientCustomDomain",
        "type": "object"
      },
      "SAMLLMClientMetadata": {
        "description": "Smarter API LLMClient Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMLLMClientMetadata",
        "type": "object"
      },
      "SAMLLMClientSpec": {
        "description": "Smarter API LLMClient Manifest LLMClient.spec.",
        "properties": {
          "apiKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.apiKey[str]. Optional. The name of the API key that this llmclient uses for authentication. Example: 'my_api_key'. API keys are only necessary for llmclients that are not public facing. This is the name of the API key that is used to authenticate the llmclient with the Smarter API. API keys are issued by a Smarter platform administrator and are used to authenticate the llmclient with the Smarter API.",
            "title": "Apikey"
          },
          "config": {
            "$ref": "#/components/schemas/SAMLLMClientSpecConfig",
            "description": "LLMClient.spec.config[object]. The configuration for the LLMClient."
          },
          "extensions": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.extensions[list]. Optional. The slugs of the Extensions whose tools the LLMClient offers the LLM. Example: ['weather', 'calculator']. Extensions are Python packages that a platform administrator installs; each must be installed, enabled and available to your account. See https://docs.smarter.sh/ for more information.",
            "title": "Extensions"
          },
          "guardrails": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.guardrails[list]. Optional. The names of the Guardrails that protect the LLMClient's prompts. Example: ['pii_redaction_input', 'prompt_injection_keyword_input']. Each must be a Guardrail that you own, or that is shared with you, such as Smarter's built-in guardrails. Input guardrails run on the user's message before it is sent to the LLM, and output guardrails on the LLM's reply before it is returned to the user, in order of their priority. Experimental.",
            "title": "Guardrails"
          },
          "mcpClients": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.mcpClients[list]. Optional. The names of the MCPClients whose MCP servers' tools the LLMClient offers the LLM. Example: ['deepwiki']. Each must be an MCPClient that you own, or that is shared with you. Experimental.",
            "title": "Mcpclients"
          },
          "plugins": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.searchTerms[list]. Optional. The Plugins to add to the LLMClient. Plugins are a proprietary extensibility model for tool calling and are not the same as OpenAI plugins. See https://docs.smarter.sh/plugins/ for more information.",
            "title": "Plugins"
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMLLMClientSpec",
        "type": "object"
      },
      "SAMLLMClientSpecConfig": {
        "description": "Smarter API LLMClient Manifest LLMClient.spec.config.\n\n``prompt``, which is required, configures the LLMClient, and ``styles``, which is optional, the\nlook of its chat.\n\nManifests written before the split have their settings directly in ``spec.config``. Apply\nrejects them, with an error that says where each setting belongs now. See\n:meth:`smarter.apps.llmclient.manifest.brokers.llmclient.SAMLLMClientBroker.raise_for_unknown_keys`.",
        "properties": {
          "prompt": {
            "$ref": "#/components/schemas/SAMLLMClientSpecConfigPrompt",
            "description": "LLMClient.spec.configuration.prompt[object]. Required. The LLMClient's LLM provider, model and system prompt, the text of its chat, and where it is published."
          },
          "styles": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientSpecConfigStyles"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.styles[object]. Optional. The look of the LLMClient's chat, in the Smarter workbench and on every page that embeds it: its logo, background image, fonts and colors. See https://docs.smarter.sh/en/latest/smarter-resources/llmclient/styles.html"
          }
        },
        "required": [
          "prompt"
        ],
        "title": "SAMLLMClientSpecConfig",
        "type": "object"
      },
      "SAMLLMClientSpecConfigPrompt": {
        "description": "Smarter API LLMClient Manifest LLMClient.spec.config.prompt.\n\nWhat the LLMClient is and does: its LLM provider, model and system prompt, the text of its chat\n(its name, welcome message, example prompts and placeholder), and where it is published.",
        "properties": {
          "allowedOrigins": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "LLMClient.spec.configuration.prompt.allowed_origins[list[str]]. Optional. The origins of the web pages that may call this llmclient from a browser, with the @smarter.sh/ui-chat React component, in addition to those that the Smarter platform allows. An origin is a scheme, a host and an optional port, without a path or a wildcard. Example: ['https://www.example.com', 'http://localhost:5173'].",
            "title": "Allowedorigins"
          },
          "appAssistant": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.app_assistant[str]. Optional. The assistant name of the llmclient. Example: 'Joe'. This is the fictitious assistant name that will be displayed to users in the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appassistant"
          },
          "appExamplePrompts": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.app_example_prompts[list]. Optional. A list of example prompts to add to new prompt sessions. These are intended to be brief, and the list is assumed to include only a few examples. Example: ['How do I get a refund?', 'What is the return policy?']. These are intended to help the user to understand the llmclient's capabilities. These will be displayed to users in the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appexampleprompts"
          },
          "appFileAttachment": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": false,
            "description": "LLMClient.spec.configuration.prompt.app_file_attachment[bool]. Optional. Whether the llmclient supports file attachments. Defaults to False. When set to True, a file attachment button will be displayed in the prompt input box of the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appfileattachment"
          },
          "appInfoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.app_info_url[str]. Optional. The custom info URL of the llmclient. This is a user control button located on the right-hand side of the header of the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appinfourl"
          },
          "appName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.app_name[str]. Optional. The name of the llmclient. Example: 'Sales Support LLMClient'. This is the name that will be displayed to users in the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appname"
          },
          "appPlaceholder": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.app_placeholder[str]. Optional. The text placeholder added to the prompt input box for all new prompt sessions. Example: 'ask me anything...'. The place holder will be displayed to users in the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appplaceholder"
          },
          "appWelcomeMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.app_welcome_message[str]. Optional. The welcome message of the llmclient. Example: 'Welcome to Smarter's sales support llmclient!' The welcome messages will appear as the first assistant message in each message list from the Smarter Prompt Engineer Workbench, as well as any production UI that leverages the SmarterChat React.js Component - https://www.npmjs.com/package/@smarter.sh/ui-prompt.",
            "title": "Appwelcomemessage"
          },
          "customDomain": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientCustomDomain"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.custom_domain[str]. Optional. The custom domain to use for the llmclient. Example: example.com"
          },
          "defaultMaxTokens": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.default_max_tokens[int]. Optional. The default max tokens to use for the llmclient. This defaults to 2048.\nThe max tokens is an integer value that controls the maximum number of tokens in the llmclient's response. The maximum number of tokens is the sum of the tokens in the prompt and the tokens in the response. The maximum number of tokens varies by provider. Refer to vendor documentation as this value routinely changes as new models are released.",
            "title": "Defaultmaxtokens"
          },
          "defaultModel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.default_model[str]. Optional. The default model to use for the llmclient. This changes routinely and is currently defaults to gpt-6-luna",
            "title": "Defaultmodel"
          },
          "defaultSystemRole": {
            "anyOf": [
              {
                "maxLength": 32768,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.default_system_role[str]. Optional. The default system prompt to use for the llmclient. This defaults to the following value:\nYou are a helpful llmclient. When given the opportunity to utilize function calling, you should always do so. This will allow you to provide the best possible responses to the user. If you are unable to provide a response, you should prompt the user for more information. If you are still unable to provide a response, you should inform the user that you are unable to help them at this time..\nThe system prompt is the first message in the conversation and is used to set the context for the llmclient. It is sent with every prompt, so its tokens count towards every turn's cost. The maximum length of the system prompt is 32768 characters.",
            "title": "Defaultsystemrole"
          },
          "defaultTemperature": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.default_temperature[float]. Optional. The default temperature to use for the llmclient. This defaults to 1.0.\nThe temperature is a floating point value between 0 and 1 that controls the randomness of the llmclient's responses. A value of 0 means that the llmclient will always choose the most likely response, while a value of 1 means that the llmclient will choose a random response. Low values work better for information retrieval tasks, while high values work better for creative tasks.",
            "title": "Defaulttemperature"
          },
          "deployed": {
            "default": false,
            "description": "LLMClient.spec.configuration.prompt.deployed[bool]. Required. Whether the llmclient is deployed. Deployed means that the llmclient is available for use outside the Smarter Prompt Engineer Workbench. Published llmclients have their own subdomain, Kubernetes ingress, and TLS/SSL certificate.",
            "title": "Deployed",
            "type": "boolean"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.provider[str]. Optional. The provider to use for the llmclient.",
            "title": "Provider"
          },
          "subdomain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.spec.configuration.prompt.subdomain[str]. Optional. The subdomain to use for the llmclient for published public urls. Example: https://<subdomain>.3141-5926-5359.api.example.com",
            "title": "Subdomain"
          }
        },
        "title": "SAMLLMClientSpecConfigPrompt",
        "type": "object"
      },
      "SAMLLMClientSpecConfigStyles": {
        "additionalProperties": false,
        "description": "Smarter API LLMClient Manifest LLMClient.spec.config.styles.\n\nThe look of Smarter Chat for this LLMClient. Every setting is optional. See the module's docstring.",
        "properties": {
          "appBackgroundImageSize": {
            "anyOf": [
              {
                "enum": [
                  "cover",
                  "contain",
                  "auto"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.appBackgroundImageSize[str]. Optional. How the background image fills the conversation: 'cover' (the default) fills it and crops the image's edges, 'contain' shows the whole image, and 'auto' shows the image at its own size, repeated like tiles.",
            "title": "Appbackgroundimagesize"
          },
          "appBackgroundImageUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.appBackgroundImageUrl[str]. Optional. The url of an image that is displayed behind the conversation. Choose a quiet image, so that the messages stay readable, or tint it with a semi-transparent messageList.backgroundColor. Example: 'https://cdn.example.com/images/background.png'.",
            "title": "Appbackgroundimageurl"
          },
          "appLogoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.appLogoUrl[str]. Optional. The url of the LLMClient's logo, a square image that is displayed in a circle at the left of the chat's header, and on the LLMClient's card in the web console. chatscope's Avatar. Example: 'https://cdn.example.com/images/logo.png'.",
            "title": "Applogourl"
          },
          "assistantAvatarUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.assistantAvatarUrl[str]. Optional. The url of a small square picture, displayed in a circle beside each of the assistant's messages. chatscope's Message Avatar. Example: 'https://cdn.example.com/images/assistant.png'.",
            "title": "Assistantavatarurl"
          },
          "borderRadius": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.borderRadius[str]. Optional. How round the corners of the message bubbles and of the message input box are. '0' is square. chatscope's $default-border-radius. Example: '0.7em' (the default) or '18px'.",
            "title": "Borderradius"
          },
          "buttons": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesButtons"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.buttons[object]. Optional. The chat's buttons."
          },
          "conversationHeader": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesConversationHeader"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.conversationHeader[object]. Optional. The bar at the top of the chat."
          },
          "fontFamily": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.fontFamily[str]. Optional. The chat's fonts, the first that the visitor's browser has, in order. chatscope's $default-font-family. Example: '\"Fredoka\", system-ui, sans-serif'.",
            "title": "Fontfamily"
          },
          "fontSize": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.fontSize[str]. Optional. The size of the chat's text, of which every other size is a proportion. chatscope's $main-container-font-size. Example: '16px' or '1.1rem'.",
            "title": "Fontsize"
          },
          "googleFont": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.googleFont[str]. Optional. The name of a font from https://fonts.google.com, which the chat downloads. When fontFamily is not set, the chat uses this font. Example: 'Fredoka'.",
            "title": "Googlefont"
          },
          "incomingMessage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesMessage"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.incomingMessage[object]. Optional. The assistant's message bubbles, on the left."
          },
          "mainContainer": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesMainContainer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.mainContainer[object]. Optional. The frame around the whole chat."
          },
          "messageInput": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesMessageInput"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageInput[object]. Optional. The box in which the user types."
          },
          "messageList": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesMessageList"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageList[object]. Optional. The area that holds the conversation."
          },
          "outgoingMessage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesMessage"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.outgoingMessage[object]. Optional. The user's message bubbles, on the right."
          },
          "typingIndicator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMClientStylesTypingIndicator"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.typingIndicator[object]. Optional. The indicator that the assistant is answering."
          },
          "userAvatarUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.userAvatarUrl[str]. Optional. The url of a small square picture, displayed in a circle beside each of the user's messages. chatscope's Message Avatar. Example: 'https://cdn.example.com/images/user.png'.",
            "title": "Useravatarurl"
          }
        },
        "title": "SAMLLMClientSpecConfigStyles",
        "type": "object"
      },
      "SAMLLMClientStatus": {
        "description": "Smarter API LLMClient Manifest - Status class.",
        "properties": {
          "accountNumber": {
            "description": "LLMClient.status.account_number: The account owner of this LLMClient. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "customUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "LLMClient.status.customUrl: The custom URL for this LLMClient. Read only.",
            "title": "Customurl"
          },
          "defaultHost": {
            "description": "LLMClient.status.defaultHost: The default host URL for this LLMClient. Read only.",
            "title": "Defaulthost",
            "type": "string"
          },
          "defaultUrl": {
            "description": "LLMClient.status.defaultUrl: The default URL for this LLMClient. Read only.",
            "title": "Defaulturl",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "deployed": {
            "description": "LLMClient.status.deployed: Whether this LLMClient is currently deployed. Read only.",
            "title": "Deployed",
            "type": "boolean"
          },
          "dnsVerificationStatus": {
            "description": "LLMClient.status.dnsVerificationStatus: The DNS verification status for this LLMClient. Read only.",
            "title": "Dnsverificationstatus",
            "type": "string"
          },
          "hostname": {
            "description": "LLMClient.status.hostname: The hostname for this LLMClient. Read only.",
            "title": "Hostname",
            "type": "string"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "sandboxHost": {
            "description": "LLMClient.status.sandboxHost: The sandbox host URL for this LLMClient. Read only.",
            "title": "Sandboxhost",
            "type": "string"
          },
          "sandboxUrl": {
            "description": "LLMClient.status.sandboxUrl: The sandbox URL for this LLMClient. Read only.",
            "title": "Sandboxurl",
            "type": "string"
          },
          "url": {
            "description": "LLMClient.status.url: The URL for this LLMClient. Read only.",
            "title": "Url",
            "type": "string"
          },
          "urlChatConfig": {
            "description": "LLMClient.status.urlChatConfig: The prompt config URL for this LLMClient. Read only.",
            "title": "Urlchatconfig",
            "type": "string"
          },
          "urlChatapp": {
            "description": "LLMClient.status.urlChatapp: The chatapp URL for this LLMClient. Read only.",
            "title": "Urlchatapp",
            "type": "string"
          },
          "urlLLMClient": {
            "description": "LLMClient.status.urlLLMClient: The llmclient URL for this LLMClient. Read only.",
            "title": "Urlllmclient",
            "type": "string"
          },
          "username": {
            "description": "LLMClient.status.username: The Smarter user who created this LLMClient. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username",
          "deployed",
          "defaultHost",
          "defaultUrl",
          "customUrl",
          "sandboxHost",
          "sandboxUrl",
          "hostname",
          "url",
          "urlLLMClient",
          "urlChatapp",
          "urlChatConfig",
          "dnsVerificationStatus"
        ],
        "title": "SAMLLMClientStatus",
        "type": "object"
      },
      "SAMLLMClientStylesButtons": {
        "additionalProperties": false,
        "description": "``spec.config.styles.buttons``: the send and attach buttons, on the message input.\n\nThe header's buttons take the header's text color, ``conversationHeader.color``, so that\nthey contrast with the header, whose background is usually the opposite of the input's.\n\nchatscope's ``Button``, class ``.cs-button``.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.buttons.color[str]. Optional. The color of the send and attach buttons' icons, on the message input. The header's buttons use conversationHeader.color, or this color if it is not set. chatscope's $button-color. Example: '#6ea9d7'.",
            "title": "Color"
          }
        },
        "title": "SAMLLMClientStylesButtons",
        "type": "object"
      },
      "SAMLLMClientStylesConversationHeader": {
        "additionalProperties": false,
        "description": "``spec.config.styles.conversationHeader``: the bar at the top of the chat.\n\nIt holds the logo, the LLMClient's name, its model, and the buttons. chatscope's\n``ConversationHeader``, class ``.cs-conversation-header``.",
        "properties": {
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.conversationHeader.backgroundColor[str]. Optional. The header's background color. chatscope's $conversation-header-bg-color. Example: '#1b1f3b'.",
            "title": "Backgroundcolor"
          },
          "borderColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.conversationHeader.borderColor[str]. Optional. The color of the line under the header. chatscope's $conversation-header-border-bottom. Example: '#ff5733'.",
            "title": "Bordercolor"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.conversationHeader.color[str]. Optional. The color of the LLMClient's name, and of the header's buttons: new chat, show or hide the Console, sandbox or production, and Docs. Choose a color that contrasts with backgroundColor. chatscope's $conversation-header-user-name-color. Example: '#ffffff'.",
            "title": "Color"
          },
          "infoColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.conversationHeader.infoColor[str]. Optional. The color of the line under the name, which names the LLM provider and model. chatscope's $conversation-header-info-color. Example: '#c0c4e0'.",
            "title": "Infocolor"
          }
        },
        "title": "SAMLLMClientStylesConversationHeader",
        "type": "object"
      },
      "SAMLLMClientStylesMainContainer": {
        "additionalProperties": false,
        "description": "``spec.config.styles.mainContainer``: the frame around the whole chat.\n\nchatscope's ``MainContainer``, class ``.cs-main-container``.",
        "properties": {
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.mainContainer.backgroundColor[str]. Optional. The color behind the whole chat. chatscope's $main-container-bg-color. Example: '#ffffff'.",
            "title": "Backgroundcolor"
          },
          "borderColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.mainContainer.borderColor[str]. Optional. The color of the line around the chat. chatscope's $main-container-border. Example: '#ff5733'.",
            "title": "Bordercolor"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.mainContainer.color[str]. Optional. The default text color of the chat. chatscope's $main-container-color. Example: '#212121'.",
            "title": "Color"
          }
        },
        "title": "SAMLLMClientStylesMainContainer",
        "type": "object"
      },
      "SAMLLMClientStylesMessage": {
        "additionalProperties": false,
        "description": "``spec.config.styles.incomingMessage`` and ``outgoingMessage``: the message bubbles.\n\nIncoming messages are the assistant's, on the left. Outgoing messages are the user's, on the\nright. chatscope's ``Message``, classes ``.cs-message--incoming`` and ``.cs-message--outgoing``.",
        "properties": {
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.message.backgroundColor[str]. Optional. The bubble's color. chatscope's $message-content-incoming-bg-color and $message-content-outgoing-bg-color. Example: '#c6e3fa'.",
            "title": "Backgroundcolor"
          },
          "borderColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.message.borderColor[str]. Optional. The color of a thin line around the bubble, which has none by default. Example: '#6ea9d7'.",
            "title": "Bordercolor"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.message.color[str]. Optional. The color of the text in the bubble. chatscope's $message-content-incoming-color and $message-content-outgoing-color. Example: '#212121'.",
            "title": "Color"
          },
          "linkColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.message.linkColor[str]. Optional. The color of links in the bubble. Example: '#0b57d0'.",
            "title": "Linkcolor"
          }
        },
        "title": "SAMLLMClientStylesMessage",
        "type": "object"
      },
      "SAMLLMClientStylesMessageInput": {
        "additionalProperties": false,
        "description": "``spec.config.styles.messageInput``: the box at the bottom, in which the user types.\n\nchatscope's ``MessageInput``, class ``.cs-message-input``.",
        "properties": {
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageInput.backgroundColor[str]. Optional. The color of the strip around the box. chatscope's $message-input-bg-color. Example: '#ffffff'.",
            "title": "Backgroundcolor"
          },
          "borderColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageInput.borderColor[str]. Optional. The color of the line above the box. chatscope's $chat-container-message-input-border-top. Example: '#d1dbe3'.",
            "title": "Bordercolor"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageInput.color[str]. Optional. The color of the text that the user types. chatscope's $message-input-content-editor-color. Example: '#212121'.",
            "title": "Color"
          },
          "editorBackgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageInput.editorBackgroundColor[str]. Optional. The color of the box itself. chatscope's $message-input-content-editor-wrapper-bg-color. Example: '#c6e3fa'.",
            "title": "Editorbackgroundcolor"
          },
          "placeholderColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageInput.placeholderColor[str]. Optional. The color of the placeholder, the hint in the empty box (spec.config.prompt.appPlaceholder). chatscope's $message-input-placeholder-color. Example: '#9e9e9e'.",
            "title": "Placeholdercolor"
          }
        },
        "title": "SAMLLMClientStylesMessageInput",
        "type": "object"
      },
      "SAMLLMClientStylesMessageList": {
        "additionalProperties": false,
        "description": "``spec.config.styles.messageList``: the scrolling area that holds the conversation.\n\nIt is painted over ``appBackgroundImageUrl``, so a semi-transparent ``backgroundColor`` tints the\nimage. chatscope's ``MessageList``, class ``.cs-message-list``.",
        "properties": {
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageList.backgroundColor[str]. Optional. The color of the conversation's background. Over a background image, use a semi-transparent color, such as 'rgba(255, 255, 255, 0.6)', which tints the image. chatscope's $message-list-bg-color. Example: '#f6fbff'.",
            "title": "Backgroundcolor"
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.messageList.color[str]. Optional. The color of text in the conversation outside of the messages, such as the typing indicator's. chatscope's $message-list-color. Example: '#212121'.",
            "title": "Color"
          }
        },
        "title": "SAMLLMClientStylesMessageList",
        "type": "object"
      },
      "SAMLLMClientStylesTypingIndicator": {
        "additionalProperties": false,
        "description": "``spec.config.styles.typingIndicator``: \"Assistant is typing\", and its dots, while the LLM answers.\n\nchatscope's ``TypingIndicator``, class ``.cs-typing-indicator``.",
        "properties": {
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMClient.styles.typingIndicator.color[str]. Optional. The color of the text and of the animated dots. chatscope's $typing-indicator-text-color and $typing-indicator-dot-bg-color. Example: '#6ea9d7'.",
            "title": "Color"
          }
        },
        "title": "SAMLLMClientStylesTypingIndicator",
        "type": "object"
      },
      "SAMLLMHost": {
        "description": "Smarter API Manifest - LLMHost.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "LLMHost",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMLLMHostMetadata",
            "description": "LLMHost.metadata[obj]: Required, the LLMHost metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMLLMHostSpec",
            "description": "LLMHost.spec[obj]: Required, the LLMHost specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMHostStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status[obj]: Optional, Read-only. Stateful status information about the LLMHost."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMLLMHost",
        "type": "object"
      },
      "SAMLLMHostCompute": {
        "description": "Smarter API Manifest - LLMHostCompute.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "LLMHostCompute",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMLLMHostComputeMetadata",
            "description": "LLMHostCompute.metadata[obj]: Required, the LLMHostCompute metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMLLMHostComputeSpec",
            "description": "LLMHostCompute.spec[obj]: Required, the LLMHostCompute specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMHostComputeStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status[obj]: Optional, Read-only. Stateful status information about the LLMHostCompute."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMLLMHostCompute",
        "type": "object"
      },
      "SAMLLMHostComputeCost": {
        "additionalProperties": false,
        "description": "Spec.cost: the price of one node, from which LLMHosts' costs are reported.",
        "properties": {
          "currency": {
            "default": "USD",
            "description": "LLMHostCompute.spec.cost.currency[str]: e.g. USD.",
            "title": "Currency",
            "type": "string"
          },
          "perHour": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.spec.cost.perHour[decimal]: the cost per hour of one node, e.g. its on-demand price.",
            "title": "Perhour"
          }
        },
        "title": "SAMLLMHostComputeCost",
        "type": "object"
      },
      "SAMLLMHostComputeGpu": {
        "additionalProperties": false,
        "description": "Spec.node.gpu: the node's GPUs.",
        "properties": {
          "count": {
            "description": "LLMHostCompute.spec.node.gpu.count[int]: the node's GPUs.",
            "maximum": 16,
            "minimum": 1,
            "title": "Count",
            "type": "integer"
          },
          "memoryGb": {
            "description": "LLMHostCompute.spec.node.gpu.memoryGb[int]: the memory of one GPU, in GB.",
            "minimum": 1,
            "title": "Memorygb",
            "type": "integer"
          },
          "resource": {
            "default": "nvidia.com/gpu",
            "description": "LLMHostCompute.spec.node.gpu.resource[str]: the Kubernetes extended resource that advertises the GPUs.",
            "title": "Resource",
            "type": "string"
          },
          "type": {
            "description": "LLMHostCompute.spec.node.gpu.type[str]: the GPU model, e.g. L4, A10G, H100-80GB.",
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type",
          "count",
          "memoryGb"
        ],
        "title": "SAMLLMHostComputeGpu",
        "type": "object"
      },
      "SAMLLMHostComputeMetadata": {
        "description": "Smarter API LLMHostCompute Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMLLMHostComputeMetadata",
        "type": "object"
      },
      "SAMLLMHostComputeNode": {
        "additionalProperties": false,
        "description": "Spec.node: the kind of node.",
        "properties": {
          "amiType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.spec.node.amiType[str]: e.g. AL2023_x86_64_NVIDIA. Defaults to the NVIDIA AMI for a GPU node, else the standard AMI.",
            "title": "Amitype"
          },
          "capacityType": {
            "default": "ON_DEMAND",
            "description": "LLMHostCompute.spec.node.capacityType[str]: ON_DEMAND or SPOT.",
            "pattern": "^(ON_DEMAND|SPOT)$",
            "title": "Capacitytype",
            "type": "string"
          },
          "cpu": {
            "description": "LLMHostCompute.spec.node.cpu[int]: the node's vCPUs.",
            "minimum": 1,
            "title": "Cpu",
            "type": "integer"
          },
          "diskSizeGb": {
            "default": 100,
            "description": "LLMHostCompute.spec.node.diskSizeGb[int]: the node's root volume, for container images. Model weights are on the LLMHosts' own volumes.",
            "minimum": 20,
            "title": "Disksizegb",
            "type": "integer"
          },
          "gpu": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMLLMHostComputeGpu"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.spec.node.gpu[object]: the node's GPUs. None for a CPU node."
          },
          "instanceType": {
            "description": "LLMHostCompute.spec.node.instanceType[str]: e.g. g6.2xlarge.",
            "title": "Instancetype",
            "type": "string"
          },
          "memoryGb": {
            "description": "LLMHostCompute.spec.node.memoryGb[int]: the node's memory, in GiB.",
            "minimum": 1,
            "title": "Memorygb",
            "type": "integer"
          }
        },
        "required": [
          "instanceType",
          "cpu",
          "memoryGb"
        ],
        "title": "SAMLLMHostComputeNode",
        "type": "object"
      },
      "SAMLLMHostComputeNodeGroup": {
        "additionalProperties": false,
        "description": "Spec.nodeGroup: the node group of the nodes.",
        "properties": {
          "maxNodes": {
            "default": 4,
            "description": "LLMHostCompute.spec.nodeGroup.maxNodes[int]: the most nodes that Smarter adds to the node group.",
            "maximum": 100,
            "minimum": 1,
            "title": "Maxnodes",
            "type": "integer"
          },
          "subnetIds": {
            "description": "LLMHostCompute.spec.nodeGroup.subnetIds[list]: the node group's subnets. Defaults to the platform's. One subnet keeps the nodes in one availability zone, with the LLMHosts' model volumes.",
            "items": {
              "type": "string"
            },
            "title": "Subnetids",
            "type": "array"
          }
        },
        "title": "SAMLLMHostComputeNodeGroup",
        "type": "object"
      },
      "SAMLLMHostComputeSpec": {
        "additionalProperties": false,
        "description": "Smarter API LLMHostCompute Manifest LLMHostCompute.spec.",
        "properties": {
          "cost": {
            "$ref": "#/components/schemas/SAMLLMHostComputeCost",
            "description": "LLMHostCompute.spec.cost[object]: for reporting."
          },
          "node": {
            "$ref": "#/components/schemas/SAMLLMHostComputeNode",
            "description": "LLMHostCompute.spec.node[object]: the kind of node."
          },
          "nodeGroup": {
            "$ref": "#/components/schemas/SAMLLMHostComputeNodeGroup",
            "description": "LLMHostCompute.spec.nodeGroup[object]: the node group of the nodes."
          }
        },
        "required": [
          "node"
        ],
        "title": "SAMLLMHostComputeSpec",
        "type": "object"
      },
      "SAMLLMHostComputeStatus": {
        "description": "Smarter API LLMHostCompute Manifest - Status class.\n\nRead only. Besides ownership, it reports the node group, as of its most recent reconcile.",
        "properties": {
          "accountNumber": {
            "description": "LLMHostCompute.status.account_number: The account owner of this LLMHostCompute. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "desiredNodes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.desiredNodes: the node group's desired size. Read only.",
            "title": "Desirednodes"
          },
          "lastReconciledAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.lastReconciledAt: when it was last reconciled. Read only.",
            "title": "Lastreconciledat"
          },
          "llmhosts": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.llmhosts: the LLMHosts that run on it. Read only.",
            "title": "Llmhosts"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.message: the result of the last reconcile. Read only.",
            "title": "Message"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "nodeGroupName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.nodeGroupName: the cloud's name of the node group. Read only.",
            "title": "Nodegroupname"
          },
          "nodeGroupStatus": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.nodeGroupStatus: e.g. absent, CREATING or ACTIVE. Read only.",
            "title": "Nodegroupstatus"
          },
          "readyNodes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHostCompute.status.readyNodes: the nodes that have joined the cluster. Read only.",
            "title": "Readynodes"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "LLMHostCompute.status.username: The Smarter user who created this LLMHostCompute. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMLLMHostComputeStatus",
        "type": "object"
      },
      "SAMLLMHostEngineConfig": {
        "additionalProperties": false,
        "description": "Spec.engine: the inference server.\n\nThe common settings, e.g. ``contextLength``, are translated into each engine's own\narguments, e.g. vLLM's ``--max-model-len`` and llama.cpp's ``--ctx-size``. ``args`` and\n``env`` are passed to the engine as they are, for everything else.",
        "properties": {
          "apiFormat": {
            "default": "openai_compatible",
            "description": "LLMHost.spec.engine.apiFormat[str]: the wire protocol. One of: ['openai_compatible', 'huggingface', 'ollama_native', 'custom'].",
            "enum": [
              "openai_compatible",
              "huggingface",
              "ollama_native",
              "custom"
            ],
            "title": "Apiformat",
            "type": "string"
          },
          "args": {
            "description": "LLMHost.spec.engine.args[list]: additional arguments, passed to the engine as they are.",
            "items": {
              "type": "string"
            },
            "title": "Args",
            "type": "array"
          },
          "command": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.command[list]: overrides the image's entrypoint. For custom engines.",
            "title": "Command"
          },
          "contextLength": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.contextLength[int]: the maximum context the server allocates, in tokens.",
            "title": "Contextlength"
          },
          "dtype": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.dtype[str]: e.g. auto, bfloat16, float16.",
            "title": "Dtype"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "LLMHost.spec.engine.env[dict]: additional environment variables.",
            "title": "Env",
            "type": "object"
          },
          "gpuMemoryUtilization": {
            "anyOf": [
              {
                "exclusiveMinimum": 0.0,
                "maximum": 1.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.gpuMemoryUtilization[float]: the fraction of GPU memory the server may use.",
            "title": "Gpumemoryutilization"
          },
          "image": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.image[str]: the container image. Defaults to the engine's official image. Pin a version in production. Required for custom.",
            "title": "Image"
          },
          "maxConcurrentRequests": {
            "anyOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.maxConcurrentRequests[int]: the requests that one replica serves at once.",
            "title": "Maxconcurrentrequests"
          },
          "name": {
            "description": "LLMHost.spec.engine.name[str]: the inference server. One of: ['vllm', 'tgi', 'sglang', 'llama_cpp', 'ollama', 'tei', 'custom'].",
            "enum": [
              "vllm",
              "tgi",
              "sglang",
              "llama_cpp",
              "ollama",
              "tei",
              "custom"
            ],
            "title": "Name",
            "type": "string"
          },
          "port": {
            "anyOf": [
              {
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.port[int]: the container port. Defaults to the engine's port. Required for custom.",
            "title": "Port"
          },
          "tensorParallelSize": {
            "anyOf": [
              {
                "maximum": 16,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.engine.tensorParallelSize[int]: the GPUs that one replica shards the model across.",
            "title": "Tensorparallelsize"
          },
          "trustRemoteCode": {
            "default": false,
            "description": "LLMHost.spec.engine.trustRemoteCode[bool]: run Python code from the model repository. Only for repositories that you trust.",
            "title": "Trustremotecode",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "title": "SAMLLMHostEngineConfig",
        "type": "object"
      },
      "SAMLLMHostHealthCheck": {
        "additionalProperties": false,
        "description": "Spec.healthCheck: the probes that decide when a replica is ready.",
        "properties": {
          "path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.healthCheck.path[str]: the HTTP health path. Defaults to the engine's, e.g. /health.",
            "title": "Path"
          },
          "periodSeconds": {
            "default": 10,
            "description": "LLMHost.spec.healthCheck.periodSeconds[int]: how often the probes run.",
            "maximum": 300,
            "minimum": 1,
            "title": "Periodseconds",
            "type": "integer"
          },
          "startupTimeoutSeconds": {
            "default": 3600,
            "description": "LLMHost.spec.healthCheck.startupTimeoutSeconds[int]: the time the server has to download and load the weights before it is restarted. Large models need more.",
            "maximum": 21600,
            "minimum": 60,
            "title": "Startuptimeoutseconds",
            "type": "integer"
          }
        },
        "title": "SAMLLMHostHealthCheck",
        "type": "object"
      },
      "SAMLLMHostMetadata": {
        "description": "Smarter API LLMHost Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMLLMHostMetadata",
        "type": "object"
      },
      "SAMLLMHostModel": {
        "additionalProperties": false,
        "description": "Spec.model: what is served, and where its weights come from.",
        "properties": {
          "architecture": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.architecture[str]: e.g. llama, qwen3, gemma3.",
            "title": "Architecture"
          },
          "capabilities": {
            "$ref": "#/components/schemas/SAMLLMHostModelCapabilities",
            "description": "LLMHost.spec.model.capabilities[object]: what the model can do."
          },
          "contextWindow": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.contextWindow[int]: the model's maximum context, in tokens.",
            "title": "Contextwindow"
          },
          "embeddingDimensions": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.embeddingDimensions[int]: for embedding models.",
            "title": "Embeddingdimensions"
          },
          "file": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.file[str]: a single weights file within the repository, e.g. a GGUF file for llama_cpp. For ollama with a Hugging Face source, the quantization tag, e.g. Q4_K_M.",
            "title": "File"
          },
          "license": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.license[str]: e.g. apache-2.0.",
            "title": "License"
          },
          "parameterCount": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.parameterCount[int]: the number of parameters.",
            "title": "Parametercount"
          },
          "quantization": {
            "default": "none",
            "description": "LLMHost.spec.model.quantization[str]: the weights' precision. One of: ['none', 'fp32', 'fp16', 'bf16', 'fp8', 'mxfp4', 'int8', 'int4', 'gguf', 'awq', 'gptq'].",
            "enum": [
              "none",
              "fp32",
              "fp16",
              "bf16",
              "fp8",
              "mxfp4",
              "int8",
              "int4",
              "gguf",
              "awq",
              "gptq"
            ],
            "title": "Quantization",
            "type": "string"
          },
          "repository": {
            "description": "LLMHost.spec.model.repository[str]: the model, in the source's terms: a Hugging Face repository id, e.g. Qwen/Qwen3-8B; an Ollama tag, e.g. llama3.1:8b; an S3 prefix, e.g. s3://bucket/models/qwen3; a URL; or, for pvc, a path within the volume.",
            "title": "Repository",
            "type": "string"
          },
          "revision": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.revision[str]: a Hugging Face branch, tag or commit SHA. Pin a commit SHA for reproducible deployments. Defaults to main.",
            "title": "Revision"
          },
          "servedName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.servedName[str]: the model name that clients send in their requests. Defaults to the LLMHost's name. Ollama always uses repository.",
            "title": "Servedname"
          },
          "source": {
            "default": "huggingface",
            "description": "LLMHost.spec.model.source[str]: where the weights come from. One of: ['huggingface', 'ollama', 's3', 'url', 'pvc'].",
            "enum": [
              "huggingface",
              "ollama",
              "s3",
              "url",
              "pvc"
            ],
            "title": "Source",
            "type": "string"
          },
          "task": {
            "default": "text-generation",
            "description": "LLMHost.spec.model.task[str]: what the model does. One of: ['text-generation', 'embedding'].",
            "enum": [
              "text-generation",
              "embedding"
            ],
            "title": "Task",
            "type": "string"
          },
          "tokenSecret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.model.tokenSecret[str]: the name of a Smarter Secret with a Hugging Face access token, for gated models, e.g. Llama and Gemma. You must also accept the model's license on huggingface.co.",
            "title": "Tokensecret"
          }
        },
        "required": [
          "repository"
        ],
        "title": "SAMLLMHostModel",
        "type": "object"
      },
      "SAMLLMHostModelCapabilities": {
        "additionalProperties": false,
        "description": "What the model can do.\n\nInformational, for discovery and for the LLMClients that use it.",
        "properties": {
          "functionCalling": {
            "default": false,
            "description": "LLMHost.spec.model.capabilities.functionCalling[bool]: supports tool calls. Some engines also require args, e.g. vLLM's --enable-auto-tool-choice and --tool-call-parser.",
            "title": "Functioncalling",
            "type": "boolean"
          },
          "reasoning": {
            "default": false,
            "description": "LLMHost.spec.model.capabilities.reasoning[bool]: a reasoning model.",
            "title": "Reasoning",
            "type": "boolean"
          },
          "streaming": {
            "default": true,
            "description": "LLMHost.spec.model.capabilities.streaming[bool]: streams responses.",
            "title": "Streaming",
            "type": "boolean"
          },
          "vision": {
            "default": false,
            "description": "LLMHost.spec.model.capabilities.vision[bool]: accepts images.",
            "title": "Vision",
            "type": "boolean"
          }
        },
        "title": "SAMLLMHostModelCapabilities",
        "type": "object"
      },
      "SAMLLMHostNetwork": {
        "additionalProperties": false,
        "description": "Spec.network: how the LLMHost is reached.\n\nIt is always reachable inside the cluster, at its Service. With ``ingress``, it is also\nreachable at ``https://<hostname>``, with a TLS certificate from cert-manager. A public\nendpoint requires an API key, unless ``allowUnauthenticated``.",
        "properties": {
          "allowUnauthenticated": {
            "default": false,
            "description": "LLMHost.spec.network.allowUnauthenticated[bool]: permit an Ingress for an engine that does not authenticate requests, e.g. tgi and ollama. Anyone who knows the hostname can use the model.",
            "title": "Allowunauthenticated",
            "type": "boolean"
          },
          "apiKeySecret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.network.apiKeySecret[str]: the name of a Smarter Secret with the API key that clients must send as a Bearer token. If omitted, Smarter generates one when the LLMHost is launched, and stores it in the Secret llmhost_<name>_api_key.",
            "title": "Apikeysecret"
          },
          "hostname": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.network.hostname[str]: the Ingress hostname. Defaults to <name>.llmhost.<account number>.<environment API domain>.",
            "title": "Hostname"
          },
          "ingress": {
            "default": false,
            "description": "LLMHost.spec.network.ingress[bool]: create an Ingress.",
            "title": "Ingress",
            "type": "boolean"
          }
        },
        "title": "SAMLLMHostNetwork",
        "type": "object"
      },
      "SAMLLMHostResources": {
        "additionalProperties": false,
        "description": "Spec.resources: the compute that each replica, one pod, requests.\n\nThese are the pod's resource requests, not a node's capacity. They must fit a node of the\nLLMHost's compute, which also determines the GPU model.",
        "properties": {
          "cpu": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.resources.cpu[str]: the pod's CPU request, e.g. 4 or 3500m.",
            "title": "Cpu"
          },
          "gpuCount": {
            "default": 0,
            "description": "LLMHost.spec.resources.gpuCount[int]: the GPUs per replica. 0 runs on CPU.",
            "maximum": 16,
            "minimum": 0,
            "title": "Gpucount",
            "type": "integer"
          },
          "gpuResource": {
            "default": "nvidia.com/gpu",
            "description": "LLMHost.spec.resources.gpuResource[str]: the Kubernetes extended resource, e.g. nvidia.com/gpu.",
            "title": "Gpuresource",
            "type": "string"
          },
          "memory": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.resources.memory[str]: the pod's memory request and limit, e.g. 24Gi.",
            "title": "Memory"
          },
          "nodeSelector": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "LLMHost.spec.resources.nodeSelector[dict]: additional node labels.",
            "title": "Nodeselector",
            "type": "object"
          },
          "serviceAccountName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.resources.serviceAccountName[str]: e.g. for IRSA access to an S3 model source.",
            "title": "Serviceaccountname"
          },
          "shmSize": {
            "default": "8Gi",
            "description": "LLMHost.spec.resources.shmSize[str]: the size of /dev/shm.",
            "title": "Shmsize",
            "type": "string"
          },
          "tolerations": {
            "description": "LLMHost.spec.resources.tolerations[list]: Kubernetes tolerations. When gpuCount > 0, a toleration of the gpuResource taint is added.",
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Tolerations",
            "type": "array"
          },
          "vramRequiredGb": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.resources.vramRequiredGb[int]: the GPU memory the model requires. Informational.",
            "title": "Vramrequiredgb"
          }
        },
        "title": "SAMLLMHostResources",
        "type": "object"
      },
      "SAMLLMHostScaling": {
        "additionalProperties": false,
        "description": "Spec.scaling: the replicas.",
        "properties": {
          "replicas": {
            "default": 1,
            "description": "LLMHost.spec.scaling.replicas[int]: the replicas. More than one requires storage.accessMode ReadWriteMany or ReadOnlyMany.",
            "maximum": 16,
            "minimum": 1,
            "title": "Replicas",
            "type": "integer"
          }
        },
        "title": "SAMLLMHostScaling",
        "type": "object"
      },
      "SAMLLMHostSpec": {
        "additionalProperties": false,
        "description": "Smarter API LLMHost Manifest LLMHost.spec.",
        "properties": {
          "compute": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.compute[str]: the LLMHostCompute that the LLMHost runs on, e.g. gpu_l4_1x. Defaults to the cheapest one that its resources fit.",
            "title": "Compute"
          },
          "engine": {
            "$ref": "#/components/schemas/SAMLLMHostEngineConfig",
            "description": "LLMHost.spec.engine[object]: the inference server."
          },
          "healthCheck": {
            "$ref": "#/components/schemas/SAMLLMHostHealthCheck",
            "description": "LLMHost.spec.healthCheck[object]: probes."
          },
          "model": {
            "$ref": "#/components/schemas/SAMLLMHostModel",
            "description": "LLMHost.spec.model[object]: what is served."
          },
          "network": {
            "$ref": "#/components/schemas/SAMLLMHostNetwork",
            "description": "LLMHost.spec.network[object]: reachability."
          },
          "resources": {
            "$ref": "#/components/schemas/SAMLLMHostResources",
            "description": "LLMHost.spec.resources[object]: compute."
          },
          "scaling": {
            "$ref": "#/components/schemas/SAMLLMHostScaling",
            "description": "LLMHost.spec.scaling[object]: replicas."
          },
          "storage": {
            "$ref": "#/components/schemas/SAMLLMHostStorage",
            "description": "LLMHost.spec.storage[object]: the model volume."
          }
        },
        "required": [
          "model",
          "engine"
        ],
        "title": "SAMLLMHostSpec",
        "type": "object"
      },
      "SAMLLMHostStatus": {
        "description": "Smarter API LLMHost Manifest - Status class.\n\nRead only. Besides ownership, it reports the LLMHost's lifecycle state, where it can be\nreached, and its accumulated cost, as of its most recent status check.",
        "properties": {
          "accountNumber": {
            "description": "LLMHost.status.account_number: The account owner of this LLMHost. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "apiKeySecret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.apiKeySecret: the Smarter Secret with the API key, if any. Read only.",
            "title": "Apikeysecret"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "deployedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.deployedAt: when it was last launched. Read only.",
            "title": "Deployedat"
          },
          "endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.endpoint: the base URL inside the cluster, e.g. for LLMClients. Read only.",
            "title": "Endpoint"
          },
          "estimatedCost": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.estimatedCost: uptimeHours times replicas times each replica's share of its compute's node price. Read only.",
            "title": "Estimatedcost"
          },
          "healthy": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.healthy: the result of the last health check. Read only.",
            "title": "Healthy"
          },
          "hostStatus": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.hostStatus: the lifecycle state, e.g. pending, active or error. Read only.",
            "title": "Hoststatus"
          },
          "lastCheckedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.lastCheckedAt: when its status was last checked. Read only.",
            "title": "Lastcheckedat"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.message: why the LLMHost is in its state, e.g. a container error. Read only.",
            "title": "Message"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "publicUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.publicUrl: the base URL of the Ingress, if any. Read only.",
            "title": "Publicurl"
          },
          "readyReplicas": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.readyReplicas: ready. Read only.",
            "title": "Readyreplicas"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "replicas": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.replicas: desired. Read only.",
            "title": "Replicas"
          },
          "uptimeHours": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.status.uptimeHours: hours since deployedAt. Read only.",
            "title": "Uptimehours"
          },
          "username": {
            "description": "LLMHost.status.username: The Smarter user who created this LLMHost. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMLLMHostStatus",
        "type": "object"
      },
      "SAMLLMHostStorage": {
        "additionalProperties": false,
        "description": "Spec.storage: the model volume, a PersistentVolumeClaim mounted at /models.\n\nIt caches the weights, so that a restarted server does not download them again. The\ncluster's storage class provisions its PersistentVolume.",
        "properties": {
          "accessMode": {
            "default": "ReadWriteOnce",
            "description": "LLMHost.spec.storage.accessMode[str]: One of: ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany'].",
            "enum": [
              "ReadWriteOnce",
              "ReadWriteMany",
              "ReadOnlyMany"
            ],
            "title": "Accessmode",
            "type": "string"
          },
          "existingClaim": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.storage.existingClaim[str]: an existing PersistentVolumeClaim to mount, instead of creating one. Required when model.source is pvc.",
            "title": "Existingclaim"
          },
          "retain": {
            "default": true,
            "description": "LLMHost.spec.storage.retain[bool]: keep the volume, and its downloaded weights, on undeploy. It is always deleted when the LLMHost is deleted.",
            "title": "Retain",
            "type": "boolean"
          },
          "size": {
            "default": "50Gi",
            "description": "LLMHost.spec.storage.size[str]: e.g. 50Gi.",
            "title": "Size",
            "type": "string"
          },
          "storageClass": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "LLMHost.spec.storage.storageClass[str]: defaults to the cluster's default class.",
            "title": "Storageclass"
          }
        },
        "title": "SAMLLMHostStorage",
        "type": "object"
      },
      "SAMMCPClient": {
        "description": "Smarter API Manifest - MCPClient.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "MCPClient",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMMCPClientMetadata",
            "description": "MCPClient.metadata[obj]: Required, the MCPClient metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMMCPClientSpec",
            "description": "MCPClient.spec[obj]: Required, the MCPClient specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMMCPClientStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status[obj]: Optional, Read-only. Stateful status information about the MCPClient."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMMCPClient",
        "type": "object"
      },
      "SAMMCPClientMetadata": {
        "description": "Smarter API MCPClient Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMMCPClientMetadata",
        "type": "object"
      },
      "SAMMCPClientSpec": {
        "description": "Smarter API MCPClient Manifest MCPClient.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMMCPClientSpecConfig",
            "description": "MCPClient.spec.config[object]. The configuration for the MCPClient."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMMCPClientSpec",
        "type": "object"
      },
      "SAMMCPClientSpecConfig": {
        "description": "Smarter API MCPClient Manifest MCPClient.spec.config.",
        "properties": {
          "allowedResources": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "MCPClient.spec.config.allowedResources[list]: glob patterns of the resource URIs that the LLM may read, e.g. docs://example.com/* . Empty means none.",
            "title": "Allowedresources"
          },
          "allowedTools": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "MCPClient.spec.config.allowedTools[list]: glob patterns of the tool names to offer the LLM, e.g. search_* . Empty means all of the tools that the server advertises.",
            "title": "Allowedtools"
          },
          "apiKeyHeader": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "X-API-Key",
            "description": "MCPClient.spec.config.apiKeyHeader[str]: the HTTP header that carries an api_key credential.",
            "title": "Apikeyheader"
          },
          "authType": {
            "default": "none",
            "description": "MCPClient.spec.config.authType[str]: how to authenticate with the MCP server. One of: ['none', 'api_key', 'bearer_token', 'oauth2']. oauth2 sends an OAuth access token, obtained elsewhere, as a bearer token.",
            "enum": [
              "none",
              "api_key",
              "bearer_token",
              "oauth2"
            ],
            "title": "Authtype",
            "type": "string"
          },
          "cacheTtl": {
            "default": 3600,
            "description": "MCPClient.spec.config.cacheTtl[int]: seconds to cache the MCP server's tools, instructions and capabilities. 0 disables caching.",
            "maximum": 86400,
            "minimum": 0,
            "title": "Cachettl",
            "type": "integer"
          },
          "credentials": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.spec.config.credentials[str]: the name of the Smarter Secret containing the credential. Required unless authType is none.",
            "title": "Credentials"
          },
          "endpointUrl": {
            "description": "MCPClient.spec.config.endpointUrl[str]: the https URL of the MCP server's endpoint.",
            "title": "Endpointurl",
            "type": "string"
          },
          "headers": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "MCPClient.spec.config.headers[dict]: optional, non-secret HTTP headers to send to the MCP server. Credentials belong in a Smarter Secret, via credentials.",
            "title": "Headers"
          },
          "includeInstructions": {
            "default": true,
            "description": "MCPClient.spec.config.includeInstructions[bool]: add the MCP server's instructions to the system prompt.",
            "title": "Includeinstructions",
            "type": "boolean"
          },
          "isActive": {
            "default": true,
            "description": "MCPClient.spec.config.isActive[bool]: whether LLMClients use this MCPClient.",
            "title": "Isactive",
            "type": "boolean"
          },
          "priority": {
            "default": 100,
            "description": "MCPClient.spec.config.priority[int]: the order in which an LLMClient's MCPClients are offered to the LLM. Lower runs first.",
            "minimum": 0,
            "title": "Priority",
            "type": "integer"
          },
          "timeout": {
            "default": 30,
            "description": "MCPClient.spec.config.timeout[int]: seconds to wait for the MCP server to connect and respond.",
            "maximum": 120,
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          },
          "transport": {
            "default": "http",
            "description": "MCPClient.spec.config.transport[str]: the MCP transport. One of: ['http', 'sse']. http is Streamable HTTP, and sse is the legacy HTTP+SSE transport.",
            "enum": [
              "http",
              "sse"
            ],
            "title": "Transport",
            "type": "string"
          }
        },
        "required": [
          "endpointUrl"
        ],
        "title": "SAMMCPClientSpecConfig",
        "type": "object"
      },
      "SAMMCPClientStatus": {
        "description": "Smarter API MCPClient Manifest - Status class.\n\nRead only. Besides ownership, it reports the result of the last connection to the MCP server.",
        "properties": {
          "accountNumber": {
            "description": "MCPClient.status.account_number: The account owner of this MCPClient. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "connectionStatus": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.connectionStatus: the result of the last connection to the MCP server: unconfigured, connected, disconnected or error. Read only.",
            "title": "Connectionstatus"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "lastConnected": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.lastConnected: when Smarter last connected to the MCP server. Read only.",
            "title": "Lastconnected"
          },
          "lastError": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.lastError: the error of the last failed connection, if any. Read only.",
            "title": "Lasterror"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "protocolVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.protocolVersion: the MCP protocol version negotiated with the server. Read only.",
            "title": "Protocolversion"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "serverName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.serverName: the name that the MCP server reported. Read only.",
            "title": "Servername"
          },
          "serverVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.serverVersion: the version that the MCP server reported. Read only.",
            "title": "Serverversion"
          },
          "tools": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCPClient.status.tools: the names of the MCP server's tools that this MCPClient offers the LLM, as of the last connection. Read only.",
            "title": "Tools"
          },
          "username": {
            "description": "MCPClient.status.username: The Smarter user who created this MCPClient. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMMCPClientStatus",
        "type": "object"
      },
      "SAMManifest": {
        "description": "A SAM manifest of any kind. Its kind selects its schema.",
        "discriminator": {
          "mapping": {
            "Account": "#/components/schemas/SAMAccount",
            "ApiConnection": "#/components/schemas/SAMApiConnection",
            "ApiPlugin": "#/components/schemas/SAMApiPlugin",
            "Budget": "#/components/schemas/SAMBudget",
            "CustomDomain": "#/components/schemas/SAMCustomDomain",
            "Guardrail": "#/components/schemas/SAMGuardrail",
            "ImageSearchPlugin": "#/components/schemas/SAMImageSearchPlugin",
            "LLMClient": "#/components/schemas/SAMLLMClient",
            "LLMHost": "#/components/schemas/SAMLLMHost",
            "LLMHostCompute": "#/components/schemas/SAMLLMHostCompute",
            "MCPClient": "#/components/schemas/SAMMCPClient",
            "Orchestrator": "#/components/schemas/SAMOrchestrator",
            "Plugin": "#/components/schemas/SAMStaticPlugin",
            "Prompt": "#/components/schemas/SAMPrompt",
            "Provider": "#/components/schemas/SAMProvider",
            "Proxy": "#/components/schemas/SAMProxy",
            "Secret": "#/components/schemas/SAMSecret",
            "SkillPlugin": "#/components/schemas/SAMSkillPlugin",
            "SmarterAuthToken": "#/components/schemas/SAMSmarterAuthToken",
            "SqlConnection": "#/components/schemas/SAMSqlConnection",
            "SqlPlugin": "#/components/schemas/SAMSqlPlugin",
            "User": "#/components/schemas/SAMUser",
            "Vectorsearch": "#/components/schemas/SAMVectorsearch",
            "Vectorstore": "#/components/schemas/SAMVectorstore",
            "WebsearchPlugin": "#/components/schemas/SAMWebsearchPlugin"
          },
          "propertyName": "kind"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/SAMAccount"
          },
          {
            "$ref": "#/components/schemas/SAMApiConnection"
          },
          {
            "$ref": "#/components/schemas/SAMApiPlugin"
          },
          {
            "$ref": "#/components/schemas/SAMBudget"
          },
          {
            "$ref": "#/components/schemas/SAMCustomDomain"
          },
          {
            "$ref": "#/components/schemas/SAMGuardrail"
          },
          {
            "$ref": "#/components/schemas/SAMImageSearchPlugin"
          },
          {
            "$ref": "#/components/schemas/SAMLLMClient"
          },
          {
            "$ref": "#/components/schemas/SAMLLMHost"
          },
          {
            "$ref": "#/components/schemas/SAMLLMHostCompute"
          },
          {
            "$ref": "#/components/schemas/SAMMCPClient"
          },
          {
            "$ref": "#/components/schemas/SAMOrchestrator"
          },
          {
            "$ref": "#/components/schemas/SAMStaticPlugin"
          },
          {
            "$ref": "#/components/schemas/SAMPrompt"
          },
          {
            "$ref": "#/components/schemas/SAMProvider"
          },
          {
            "$ref": "#/components/schemas/SAMProxy"
          },
          {
            "$ref": "#/components/schemas/SAMSecret"
          },
          {
            "$ref": "#/components/schemas/SAMSkillPlugin"
          },
          {
            "$ref": "#/components/schemas/SAMSmarterAuthToken"
          },
          {
            "$ref": "#/components/schemas/SAMSqlConnection"
          },
          {
            "$ref": "#/components/schemas/SAMSqlPlugin"
          },
          {
            "$ref": "#/components/schemas/SAMUser"
          },
          {
            "$ref": "#/components/schemas/SAMVectorsearch"
          },
          {
            "$ref": "#/components/schemas/SAMVectorstore"
          },
          {
            "$ref": "#/components/schemas/SAMWebsearchPlugin"
          }
        ]
      },
      "SAMOrchestrator": {
        "description": "Smarter API Manifest - Orchestrator.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Orchestrator",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMOrchestratorMetadata",
            "description": "Orchestrator.metadata[obj]: Required, the Orchestrator metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMOrchestratorSpec",
            "description": "Orchestrator.spec[obj]: Required, the Orchestrator specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMOrchestratorStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Orchestrator.status[obj]: Optional, Read-only. Stateful status information about the Orchestrator."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMOrchestrator",
        "type": "object"
      },
      "SAMOrchestratorHarnessConfig": {
        "description": "A single LLMClient (Harness) membership within the Orchestrator.\n\nMirrors smarter.apps.orchestrator.models.OrchestratorHarness. The\nllmClientName is a reference by name, not by primary key \u2014 resolved\nagainst the account's existing LLMClients at apply time.",
        "properties": {
          "config": {
            "additionalProperties": true,
            "description": "Per-membership overrides (e.g. temperature, system prompt fragment, tool allowlist).",
            "title": "Config",
            "type": "object"
          },
          "executionOrder": {
            "default": 0,
            "description": "Relative ordering for sequential/supervisor strategies.",
            "minimum": 0,
            "title": "Executionorder",
            "type": "integer"
          },
          "isActive": {
            "default": true,
            "title": "Isactive",
            "type": "boolean"
          },
          "llmClientName": {
            "description": "Name of an existing LLMClient to attach as a Harness.",
            "title": "Llmclientname",
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/HarnessRole",
            "default": "executor"
          }
        },
        "required": [
          "llmClientName"
        ],
        "title": "SAMOrchestratorHarnessConfig",
        "type": "object"
      },
      "SAMOrchestratorMetadata": {
        "description": "Smarter API Orchestrator Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMOrchestratorMetadata",
        "type": "object"
      },
      "SAMOrchestratorSpec": {
        "description": "Smarter API Orchestrator Manifest Orchestrator.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMOrchestratorSpecConfig",
            "description": "Orchestrator.spec.config[object]. The configuration for the Orchestrator."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMOrchestratorSpec",
        "type": "object"
      },
      "SAMOrchestratorSpecConfig": {
        "description": "Spec block for an Orchestrator SAM manifest.\n\nMirrors smarter.apps.orchestrator.models.Orchestrator. Consumed by the\nmanifest controller to create/update the corresponding Orchestrator\nmodel instance and its OrchestratorHarness memberships.",
        "properties": {
          "harnesses": {
            "description": "LLMClients (Harnesses) that participate in this Orchestrator.",
            "items": {
              "$ref": "#/components/schemas/SAMOrchestratorHarnessConfig"
            },
            "minItems": 1,
            "title": "Harnesses",
            "type": "array"
          },
          "isActive": {
            "default": true,
            "title": "Isactive",
            "type": "boolean"
          },
          "maxIterations": {
            "default": 10,
            "description": "Upper bound on orchestration loop iterations.",
            "minimum": 1,
            "title": "Maxiterations",
            "type": "integer"
          },
          "strategy": {
            "$ref": "#/components/schemas/OrchestrationStrategy",
            "default": "sequential"
          }
        },
        "required": [
          "harnesses"
        ],
        "title": "SAMOrchestratorSpecConfig",
        "type": "object"
      },
      "SAMOrchestratorStatus": {
        "description": "Smarter API Orchestrator Manifest - Status class.",
        "properties": {
          "accountNumber": {
            "description": "Orchestrator.status.account_number: The account owner of this Orchestrator. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "Orchestrator.status.username: The Smarter user who created this Orchestrator. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMOrchestratorStatus",
        "type": "object"
      },
      "SAMPluginCommonMetadata": {
        "description": "Smarter API Plugin Manifest - common Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "pluginClass": {
            "description": "The class of the plugin. one of: ['api', 'imagesearch', 'skill', 'sql', 'static', 'websearch']",
            "title": "Pluginclass",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version",
          "pluginClass"
        ],
        "title": "SAMPluginCommonMetadata",
        "type": "object"
      },
      "SAMPluginCommonSpecPrompt": {
        "description": "Smarter API Plugin Manifest - Spec - Prompt class.",
        "properties": {
          "maxTokens": {
            "default": 2048,
            "description": "Plugin.spec.prompt.maxTokens[int]. Optional. The maxTokens of the Plugin. Defaults to 2048. The maximum number of tokens the LLM should generate in the prompt response. ",
            "exclusiveMinimum": 0,
            "title": "Maxtokens",
            "type": "integer"
          },
          "model": {
            "default": "gpt-6-luna",
            "description": "Plugin.spec.prompt.model[str] Optional. The model of the Plugin. Defaults to gpt-6-luna. Must be one of: ['chat-latest', 'gpt-4.1', 'gpt-4.1-2025-04-14', 'gpt-4.1-mini', 'gpt-4.1-mini-2025-04-14', 'gpt-4o', 'gpt-4o-2024-08-06', 'gpt-4o-2024-11-20', 'gpt-4o-mini', 'gpt-4o-mini-2024-07-18', 'gpt-5-search-api', 'gpt-5-search-api-2025-10-14', 'gpt-5.2', 'gpt-5.2-2025-12-11', 'gpt-5.4', 'gpt-5.4-2026-03-05', 'gpt-5.4-mini', 'gpt-5.4-mini-2026-03-17', 'gpt-5.5', 'gpt-5.5-2026-04-23', 'gpt-5.6-luna', 'gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-6-astra', 'gpt-6-luna', 'gpt-6-sol', 'gpt-6.1-sol']",
            "title": "Model",
            "type": "string"
          },
          "provider": {
            "default": "openai",
            "description": "Plugin.spec.prompt.provider[str]. Optional. The provider of the LLM. Defaults to openai. The provider is the vendor name for the LLM service that will be used to generate the prompt response.",
            "title": "Provider",
            "type": "string"
          },
          "systemRole": {
            "description": "Plugin.spec.prompt.systemRole[str]. Required. The system role that the Plugin will use for the LLM text completion prompt. Be verbose and specific. Ensure that systemRole accurately conveys to the LLM how you want it to use the Plugin data that is returned. The maximum length is 32768 characters.",
            "maxLength": 32768,
            "title": "Systemrole",
            "type": "string"
          },
          "temperature": {
            "default": 1.0,
            "description": "Plugin.spec.prompt.temperature[float] Optional. The temperature of the Plugin. Defaults to 1.0. Should be between 0 and 1.0. The higher the temperature, the more creative the response. The lower the temperature, the more predictable the response.",
            "maximum": 1.0,
            "minimum": 0,
            "title": "Temperature",
            "type": "number"
          }
        },
        "required": [
          "systemRole"
        ],
        "title": "SAMPluginCommonSpecPrompt",
        "type": "object"
      },
      "SAMPluginCommonSpecSelector": {
        "description": "Smarter API Plugin Manifest - Spec - Selector class.",
        "properties": {
          "directive": {
            "description": "Plugin.spec.selector.directive[str]: Required. the kind of selector directive to use for the Plugin. Must be one of: ['search_terms', 'always', 'llm']",
            "title": "Directive",
            "type": "string"
          },
          "searchTerms": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.spec.selector.searchTerms[list]. Optional. The keyword search terms to use when the Plugin directive is 'search_terms'. Keywords are most effective when constrained to 1 or 2 words each and lists are limited to a few dozen items.",
            "title": "Searchterms"
          }
        },
        "required": [
          "directive"
        ],
        "title": "SAMPluginCommonSpecSelector",
        "type": "object"
      },
      "SAMPluginCommonStatus": {
        "description": "Smarter API Plugin Manifest - Status class.",
        "properties": {
          "accountNumber": {
            "description": "Plugin.status.account_number: The account owner of this Plugin. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "Plugin.status.account_number: The Smarter user who created this Plugin. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMPluginCommonStatus",
        "type": "object"
      },
      "SAMPluginStaticSpec": {
        "description": "Smarter API Plugin Manifest Plugin.spec.",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SAMPluginStaticSpecData",
            "description": "Plugin.spec.data[obj]: the json data returned by the Plugin. This should be one of the following kinds: ['api', 'static', 'skill', 'static', 'sql', 'websearch', 'imagesearch']"
          },
          "prompt": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecPrompt",
            "description": "Plugin.spec.prompt[obj]: the LLM prompt engineering to apply to the Plugin"
          },
          "selector": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecSelector",
            "description": "Plugin.spec.selector[obj]: the selector logic to use for the Plugin"
          }
        },
        "required": [
          "selector",
          "prompt",
          "data"
        ],
        "title": "SAMPluginStaticSpec",
        "type": "object"
      },
      "SAMPluginStaticSpecData": {
        "description": "Smarter API Plugin Manifest Plugin.spec.data.",
        "properties": {
          "staticData": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.spec.data.staticData[obj]: The static data returned by the Plugin when the class is 'static'. LLM's are adept at understanding the context of json data structures. Try to provide granular and specific data elements.",
            "title": "Staticdata"
          }
        },
        "title": "SAMPluginStaticSpecData",
        "type": "object"
      },
      "SAMPrompt": {
        "description": "Smarter API Manifest - Prompt.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Prompt",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPromptMetadata",
            "description": "Prompt.metadata[obj]: Required, the Prompt metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMPromptSpecConfig",
            "description": "Prompt.spec[obj]: Required, the Prompt specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPromptStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Prompt.status[obj]: Optional, Read-only. Stateful status information about the Prompt."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMPrompt",
        "type": "object"
      },
      "SAMPromptMetadata": {
        "description": "Smarter API Prompt Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMPromptMetadata",
        "type": "object"
      },
      "SAMPromptSpecConfig": {
        "description": "Smarter API Prompt Manifest Prompt.spec.config.",
        "properties": {
          "ipAddress": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Prompt.spec.configuration.ipAddress[str]. Read only. The IP address of the client that started the chat session.",
            "title": "Ipaddress"
          },
          "llmclient": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Prompt.spec.configuration.llmclient[str]. Read only. The name of the LLMClient of the chat session.",
            "title": "Llmclient"
          },
          "sessionKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Prompt.spec.configuration.sessionKey[str]. Read only. The session key of the Prompt's chat session.",
            "title": "Sessionkey"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Prompt.spec.configuration.url[str]. Read only. The url at which the chat session was started.",
            "title": "Url"
          },
          "userAgent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Prompt.spec.configuration.userAgent[str]. Read only. The user agent of the client that started the chat session.",
            "title": "Useragent"
          }
        },
        "title": "SAMPromptSpecConfig",
        "type": "object"
      },
      "SAMPromptStatus": {
        "description": "Smarter API Prompt Manifest - Status class.",
        "properties": {
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified"
        ],
        "title": "SAMPromptStatus",
        "type": "object"
      },
      "SAMProvider": {
        "description": "Smarter API Manifest - Account",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Provider",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMProviderMetadata",
            "description": "Provider.metadata[obj]: Required, the Provider metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMProviderSpec",
            "description": "Provider.spec[obj]: Required, the Provider specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMProviderStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Provider.status[obj]: Optional, Read-only. Stateful status information about the Provider."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMProvider",
        "type": "object"
      },
      "SAMProviderMetadata": {
        "description": "Smarter API Provider Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMProviderMetadata",
        "type": "object"
      },
      "SAMProviderSpec": {
        "description": "Smarter API Api Connection Manifest ApiConnection.spec.",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/SAMProviderSpecProvider",
            "description": "Provider.spec.selector[obj]: the spec for the Provider"
          }
        },
        "required": [
          "provider"
        ],
        "title": "SAMProviderSpec",
        "type": "object"
      },
      "SAMProviderSpecProvider": {
        "description": "Smarter API - generic API Connection class.",
        "properties": {
          "api_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of the Smarter Secret containing the API key to use for verification tests.",
            "title": "Api Key"
          },
          "base_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The base URL for the Provider's API.",
            "title": "Base Url"
          },
          "connectivity_test_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "",
            "description": "The URL path to test connectivity with the Provider's API.",
            "title": "Connectivity Test Path"
          },
          "contact_email": {
            "anyOf": [
              {
                "format": "email",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The contact email of the Provider.",
            "title": "Contact Email"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A brief description of the Provider.",
            "title": "Description"
          },
          "docs_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The documentation URL of the Provider.",
            "title": "Docs Url"
          },
          "logo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The logo of the Provider.",
            "title": "Logo"
          },
          "name": {
            "description": "The name of the Provider. Case sensitive. Must be unique and not empty, with no leading or trailing whitespace and no special characters. examples: 'OpenAI', 'GoogleAI', 'MetaAI'.",
            "title": "Name",
            "type": "string"
          },
          "privacy_policy_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The privacy policy URL of the Provider.",
            "title": "Privacy Policy Url"
          },
          "support_email": {
            "anyOf": [
              {
                "format": "email",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The support email of the Provider.",
            "title": "Support Email"
          },
          "terms_of_service_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The terms of service URL of the Provider.",
            "title": "Terms Of Service Url"
          },
          "website_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The website_url URL of the Provider.",
            "title": "Website Url"
          }
        },
        "required": [
          "name"
        ],
        "title": "SAMProviderSpecProvider",
        "type": "object"
      },
      "SAMProviderStatus": {
        "description": "Smarter API Provider Manifest - Status class.",
        "properties": {
          "can_activate": {
            "default": true,
            "description": "Provider.status.can_activate: Indicates whether this Provider can be activated. Read only.",
            "title": "Can Activate",
            "type": "boolean"
          },
          "contact_email_verified": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Provider.status.contact_email_verified: The date in which the contact email for this Provider was verified. Read only.",
            "title": "Contact Email Verified"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "is_active": {
            "description": "Provider.status.is_active: Indicates whether this Provider is currently active. Read only.",
            "title": "Is Active",
            "type": "boolean"
          },
          "is_deprecated": {
            "description": "Provider.status.is_deprecated: Indicates whether this Provider is deprecated. Read only.",
            "title": "Is Deprecated",
            "type": "boolean"
          },
          "is_flagged": {
            "description": "Provider.status.is_flagged: Indicates whether this Provider has been flagged for review. Read only.",
            "title": "Is Flagged",
            "type": "boolean"
          },
          "is_suspended": {
            "description": "Provider.status.is_suspended: Indicates whether this Provider is currently suspended. Read only.",
            "title": "Is Suspended",
            "type": "boolean"
          },
          "is_verified": {
            "description": "Provider.status.is_verified: Indicates whether this Provider has been verified. Read only.",
            "title": "Is Verified",
            "type": "boolean"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "ownership_requested": {
            "anyOf": [
              {
                "format": "email",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Provider.status.ownership_requested: The Smarter user that has requested ownership of this Provider. Read only.",
            "title": "Ownership Requested"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "support_email_verified": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Provider.status.support_email_verified: The date in which the support email for this Provider was verified. Read only.",
            "title": "Support Email Verified"
          },
          "tos_accepted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Provider.status.tos_accepted_at: The date in which the Terms of Service for this Provider were accepted. Read only.",
            "title": "Tos Accepted At"
          },
          "tos_accepted_by": {
            "anyOf": [
              {
                "format": "email",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Provider.status.tos_accepted_by: The Smarter user that accepted the Terms of Service for this Provider. Read only.",
            "title": "Tos Accepted By"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "is_active",
          "is_flagged",
          "is_deprecated",
          "is_suspended",
          "is_verified"
        ],
        "title": "SAMProviderStatus",
        "type": "object"
      },
      "SAMProxy": {
        "description": "Smarter API Manifest - Proxy.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Proxy",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMProxyMetadata",
            "description": "Proxy.metadata[obj]: Required, the Proxy metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMProxySpec",
            "description": "Proxy.spec[obj]: Required, the Proxy specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMProxyStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Proxy.status[obj]: Optional, Read-only. Stateful status information about the Proxy."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMProxy",
        "type": "object"
      },
      "SAMProxyMetadata": {
        "description": "Smarter API Proxy Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMProxyMetadata",
        "type": "object"
      },
      "SAMProxySpec": {
        "additionalProperties": false,
        "description": "Smarter API Proxy Manifest Proxy.spec.",
        "properties": {
          "allowedPaths": {
            "description": "Proxy.spec.allowedPaths[list]: glob patterns of the paths, relative to baseUrl, that callers may use, e.g. chat/completions or models/*. Empty allows every path.",
            "items": {
              "type": "string"
            },
            "title": "Allowedpaths",
            "type": "array"
          },
          "apiKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Proxy.spec.apiKey[str]: the name of the Secret that contains the provider's API key. It must belong to, or be shared with, the manifest's owner. Defaults to the Provider's API key.",
            "title": "Apikey"
          },
          "auth": {
            "$ref": "#/components/schemas/SAMProxySpecAuth",
            "description": "Proxy.spec.auth[object]: how the provider expects its API key. Defaults to Authorization: Bearer."
          },
          "baseUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Proxy.spec.baseUrl[str]: the base URL of the provider's API, e.g. https://api.openai.com/v1/. Defaults to the Provider's base URL.",
            "title": "Baseurl"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Proxy.spec.headers[dict]: other HTTP headers that are added to every request, e.g. anthropic-version. They replace the caller's headers of the same name.",
            "title": "Headers",
            "type": "object"
          },
          "isActive": {
            "default": true,
            "description": "Proxy.spec.isActive[bool]: inactive Proxy refuse every request.",
            "title": "Isactive",
            "type": "boolean"
          },
          "provider": {
            "description": "Proxy.spec.provider[str]: the name of the Provider whose API the Proxy forwards to, e.g. openai. It must belong to, or be shared with, the manifest's owner.",
            "title": "Provider",
            "type": "string"
          },
          "timeout": {
            "default": 120,
            "description": "Proxy.spec.timeout[int]: the most seconds to wait for the provider's response.",
            "maximum": 600,
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          }
        },
        "required": [
          "provider"
        ],
        "title": "SAMProxySpec",
        "type": "object"
      },
      "SAMProxySpecAuth": {
        "additionalProperties": false,
        "description": "Spec.auth: how the provider expects its API key.",
        "properties": {
          "header": {
            "default": "Authorization",
            "description": "Proxy.spec.auth.header[str]: the HTTP header in which the provider expects its API key, e.g. Authorization (OpenAI), x-api-key (Anthropic) or x-goog-api-key (Google Gemini).",
            "title": "Header",
            "type": "string"
          },
          "scheme": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "Bearer",
            "description": "Proxy.spec.auth.scheme[str]: the prefix of the API key in the header, e.g. Bearer. Empty or null for none, e.g. for x-api-key.",
            "title": "Scheme"
          }
        },
        "title": "SAMProxySpecAuth",
        "type": "object"
      },
      "SAMProxyStatus": {
        "description": "Smarter API Proxy Manifest - Status class.\n\nRead only. Besides ownership, it reports where the Proxy is, and where it forwards to.",
        "properties": {
          "accountNumber": {
            "description": "Proxy.status.accountNumber: The account owner of this Proxy. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "apiKeySecret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Proxy.status.apiKeySecret: The name of the Secret whose API key is added to requests: spec.apiKey, else the Provider's. None if there is none. Read only.",
            "title": "Apikeysecret"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "upstreamUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Proxy.status.upstreamUrl: The base URL of the provider's API, to which requests are forwarded: spec.baseUrl, else the Provider's. Read only.",
            "title": "Upstreamurl"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Proxy.status.url: The URL of the Proxy's passthrough endpoint, to use as the base URL of the provider's SDK. Read only.",
            "title": "Url"
          },
          "username": {
            "description": "Proxy.status.username: The Smarter user who created this Proxy. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMProxyStatus",
        "type": "object"
      },
      "SAMSecret": {
        "description": "Smarter API Manifest - Secret",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Secret",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMSecretMetadata",
            "description": "Secret.metadata[obj]: Required, the Secret metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMSecretSpec",
            "description": "Secret.spec[obj]: Required, the Secret specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMSecretStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Secret.status[obj]: Optional, Read-only. Stateful status information about the Secret."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMSecret",
        "type": "object"
      },
      "SAMSecretMetadata": {
        "description": "Smarter API Secret Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "Secret.metadata.name[str]. Required. The name of the secret. camelCase, no spaces, no special characters.",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMSecretMetadata",
        "type": "object"
      },
      "SAMSecretSpec": {
        "description": "Smarter API Secret Manifest Secret.spec",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMSecretSpecConfig",
            "description": "Secret.spec.config[object]. The configuration for the Secret."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMSecretSpec",
        "type": "object"
      },
      "SAMSecretSpecConfig": {
        "description": "Smarter API Secret Manifest Secret.spec.config",
        "properties": {
          "expiration_date": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Secret.spec.configuration.expiration_date[str]. Optional. The expiration date of the Secret.",
            "title": "Expiration Date"
          },
          "value": {
            "description": "Secret.spec.configuration.value[str]. Required. The unencrypted value of the Secret.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "title": "SAMSecretSpecConfig",
        "type": "object"
      },
      "SAMSecretStatus": {
        "description": "Smarter API Secret Manifest - Status class (read-only, like Kubernetes status attributes).",
        "properties": {
          "accountNumber": {
            "description": "Secret.status.account_number: The account owner of this Secret. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "last_accessed": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Secret.status.last_accessed: The date in which this Secret was most recently accessed. Read only.",
            "title": "Last Accessed"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "Secret.status.account_number: The Smarter user who created this Secret. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMSecretStatus",
        "type": "object"
      },
      "SAMSkillPlugin": {
        "description": "Smarter API Manifest - Skill Connection Model.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "SkillPlugin",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPluginCommonMetadata",
            "description": "Plugin.metadata[obj]: Required, the Plugin metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMSkillPluginSpec",
            "description": "SkillPlugin.spec[obj]: Required, the SkillPlugin specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPluginCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.status[obj]: Optional, Read-only. Stateful status information about the Plugin."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMSkillPlugin",
        "type": "object"
      },
      "SAMSkillPluginSpec": {
        "description": "Smarter API Manifest - SkillPlugin.spec.",
        "properties": {
          "prompt": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecPrompt",
            "description": "Plugin.spec.prompt[obj]: the LLM prompt engineering to apply to the Plugin"
          },
          "selector": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecSelector",
            "description": "Plugin.spec.selector[obj]: the selector logic to use for the Plugin"
          },
          "skillData": {
            "$ref": "#/components/schemas/SkillData",
            "description": "SkillPlugin.spec.skillData[obj]: the Agent Skill that the SkillPlugin provides to the LLM."
          }
        },
        "required": [
          "selector",
          "prompt",
          "skillData"
        ],
        "title": "SAMSkillPluginSpec",
        "type": "object"
      },
      "SAMSmarterAuthToken": {
        "description": "Smarter API Manifest - SmarterAuthToken",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "SmarterAuthToken",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMSmarterAuthTokenMetadata",
            "description": "SmarterAuthToken.metadata[obj]: Required, the SmarterAuthToken metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMSmarterAuthTokenSpec",
            "description": "SmarterAuthToken.spec[obj]: Required, the SmarterAuthToken specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMSmarterAuthTokenStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SmarterAuthToken.status[obj]: Optional, Read-only. Stateful status information about the SmarterAuthToken."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMSmarterAuthToken",
        "type": "object"
      },
      "SAMSmarterAuthTokenMetadata": {
        "description": "Smarter API SmarterAuthToken Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMSmarterAuthTokenMetadata",
        "type": "object"
      },
      "SAMSmarterAuthTokenSpec": {
        "description": "Smarter API SmarterAuthToken Manifest SmarterAuthToken.spec",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMSmarterAuthTokenSpecConfig",
            "description": "SmarterAuthToken.spec.config[object]. The configuration for the SmarterAuthToken."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMSmarterAuthTokenSpec",
        "type": "object"
      },
      "SAMSmarterAuthTokenSpecConfig": {
        "description": "Smarter API SmarterAuthToken Manifest SmarterAuthToken.spec.config",
        "properties": {
          "isActive": {
            "default": false,
            "description": "SmarterAuthToken.spec.configuration.isActive[bool]. Required. Whether the SmarterAuthToken is activated.",
            "title": "Isactive",
            "type": "boolean"
          },
          "username": {
            "description": "SmarterAuthToken.spec.configuration.username[str]. The Smarter username to which this SmarterAuthToken is attached.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username"
        ],
        "title": "SAMSmarterAuthTokenSpecConfig",
        "type": "object"
      },
      "SAMSmarterAuthTokenStatus": {
        "description": "Smarter API SmarterAuthToken Manifest - Status class.",
        "properties": {
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "lastUsedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SmarterAuthToken.status.modified: The date in which this SmarterAuthToken was most recently used for authentication. Read only.",
            "title": "Lastusedat"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified"
        ],
        "title": "SAMSmarterAuthTokenStatus",
        "type": "object"
      },
      "SAMSqlConnection": {
        "description": "Smarter API Manifest - SqlConnection Model",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "SqlConnection",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMConnectionCommonMetadata",
            "description": "SqlConnection.metadata[obj]: Required, the SqlConnection metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMSqlConnectionSpec",
            "description": "SqlConnection.spec[obj]: Required, the SqlConnection specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMConnectionCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SqlConnection.status[obj]: Optional, Read-only. Stateful status information about the SqlConnection."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMSqlConnection",
        "type": "object"
      },
      "SAMSqlConnectionSpec": {
        "description": "Smarter API Sql Connection Manifest Connection.spec",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/Connection",
            "description": "SqlConnection.spec.selector[obj]: the selector logic to use for the SqlConnection"
          }
        },
        "required": [
          "connection"
        ],
        "title": "SAMSqlConnectionSpec",
        "type": "object"
      },
      "SAMSqlPlugin": {
        "description": "Smarter API Manifest - Sql Connection Model.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "SqlPlugin",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPluginCommonMetadata",
            "description": "Plugin.metadata[obj]: Required, the Plugin metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMSqlPluginSpec",
            "description": "SqlPlugin.spec[obj]: Required, the SqlPlugin specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPluginCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.status[obj]: Optional, Read-only. Stateful status information about the Plugin."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMSqlPlugin",
        "type": "object"
      },
      "SAMSqlPluginSpec": {
        "description": "Smarter API SqlData Connection Manifest SqlConnection.spec.",
        "properties": {
          "connection": {
            "description": "SqlPlugin.spec.selector[obj]: the name of an existing SqlConnector to use for the SqlPlugin",
            "title": "Connection",
            "type": "string"
          },
          "prompt": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecPrompt",
            "description": "Plugin.spec.prompt[obj]: the LLM prompt engineering to apply to the Plugin"
          },
          "selector": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecSelector",
            "description": "Plugin.spec.selector[obj]: the selector logic to use for the Plugin"
          },
          "sqlData": {
            "$ref": "#/components/schemas/SqlData",
            "description": "SqlPlugin.spec.selector[obj]: the SqlData to use for the SqlPlugin"
          }
        },
        "required": [
          "selector",
          "prompt",
          "connection",
          "sqlData"
        ],
        "title": "SAMSqlPluginSpec",
        "type": "object"
      },
      "SAMStaticPlugin": {
        "description": "Smarter API Manifest - Plugin.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Plugin",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPluginCommonMetadata",
            "description": "Plugin.metadata[obj]: Required, the Plugin metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMPluginStaticSpec",
            "description": "Plugin.spec[obj]: Required, the Plugin specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPluginCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.status[obj]: Optional, Read-only. Stateful status information about the Plugin."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMStaticPlugin",
        "type": "object"
      },
      "SAMUser": {
        "description": "Smarter API Manifest - User",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "User",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMUserMetadata",
            "description": "User.metadata[obj]: Required, the User metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMUserSpec",
            "description": "User.spec[obj]: Required, the User specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMUserStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "User.status[obj]: Optional, Read-only. Stateful status information about the User."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMUser",
        "type": "object"
      },
      "SAMUserMetadata": {
        "description": "Smarter API User Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "username": {
            "description": "User.metadata.username[str]. Required. The Django username of the user.",
            "title": "Username",
            "type": "string"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version",
          "username"
        ],
        "title": "SAMUserMetadata",
        "type": "object"
      },
      "SAMUserSpec": {
        "description": "Smarter API User Manifest User.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMUserSpecConfig",
            "description": "User.spec.config[object]. The configuration for the User."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMUserSpec",
        "type": "object"
      },
      "SAMUserSpecConfig": {
        "description": "Smarter API User Manifest User.spec.config.",
        "properties": {
          "email": {
            "description": "User.spec.configuration.email[str]. The email address of the User.",
            "title": "Email",
            "type": "string"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "User.spec.configuration.firstName[str]. Optional. The first name of the User.",
            "title": "Firstname"
          },
          "isActive": {
            "description": "User.spec.configuration.isActive[bool]. Designates whether this User should be treated as active.",
            "title": "Isactive",
            "type": "boolean"
          },
          "isStaff": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": false,
            "description": "User.spec.configuration.isStaff[bool]. Optional. Designates whether the User has admin permissions.",
            "title": "Isstaff"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "User.spec.configuration.lastName[str]. Optional. The last name of the User.",
            "title": "Lastname"
          }
        },
        "required": [
          "email",
          "isActive"
        ],
        "title": "SAMUserSpecConfig",
        "type": "object"
      },
      "SAMUserStatus": {
        "description": "Smarter API User Manifest - Status class.",
        "properties": {
          "account_number": {
            "description": "User.status.account_number: The account owner of this User. Read only.",
            "title": "Account Number",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "User.status.account_number: The Smarter user who created this User. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "account_number",
          "username"
        ],
        "title": "SAMUserStatus",
        "type": "object"
      },
      "SAMVectorsearch": {
        "description": "Smarter API Manifest - Vectorsearch.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Vectorsearch",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMVectorsearchMetadata",
            "description": "Vectorsearch.metadata[obj]: Required, the Vectorsearch metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMVectorsearchSpec",
            "description": "Vectorsearch.spec[obj]: Required, the Vectorsearch specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMVectorsearchStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorsearch.status[obj]: Optional, Read-only. Stateful status information about the Vectorsearch."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMVectorsearch",
        "type": "object"
      },
      "SAMVectorsearchMetadata": {
        "description": "Smarter API Vectorsearch Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMVectorsearchMetadata",
        "type": "object"
      },
      "SAMVectorsearchSpec": {
        "description": "Smarter API Vectorsearch Manifest Vectorsearch.spec.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/SAMVectorsearchSpecConfig",
            "description": "Vectorsearch.spec.config[object]. The configuration for the Vectorsearch."
          }
        },
        "required": [
          "config"
        ],
        "title": "SAMVectorsearchSpec",
        "type": "object"
      },
      "SAMVectorsearchSpecConfig": {
        "description": "Smarter API Vectorsearch Manifest Vectorsearch.spec.config.",
        "properties": {
          "auth_secret_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional name of the Secret used to authenticate against the Vectorstore, if required.",
            "title": "Auth Secret Name"
          },
          "fetch_k": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Number of candidate documents to fetch before MMR re-ranking. Only valid when search_type='mmr'.",
            "title": "Fetch K"
          },
          "is_enabled": {
            "default": true,
            "description": "Whether this Vectorsearch is active and eligible to be queried.",
            "title": "Is Enabled",
            "type": "boolean"
          },
          "k": {
            "default": 4,
            "description": "Number of top results to return from the search.",
            "exclusiveMinimum": 0,
            "title": "K",
            "type": "integer"
          },
          "lambda_mult": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Diversity vs. relevance trade-off for MMR (0.0=max diversity, 1.0=max relevance). Only valid when search_type='mmr'.",
            "title": "Lambda Mult"
          },
          "metadata_filter": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional metadata filter applied to the Vectorstore query, e.g. {'source': 'faq'}.",
            "title": "Metadata Filter"
          },
          "score_threshold": {
            "anyOf": [
              {
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Minimum relevance score a result must meet to be included. Only valid when search_type='similarity_score_threshold'.",
            "title": "Score Threshold"
          },
          "search_type": {
            "$ref": "#/components/schemas/VectorsearchSearchType",
            "default": "similarity",
            "description": "The retrieval strategy to use when querying the Vectorstore."
          },
          "vectorstore_name": {
            "description": "The name of the locally-hosted Vectorstore this search queries against.",
            "title": "Vectorstore Name",
            "type": "string"
          }
        },
        "required": [
          "vectorstore_name"
        ],
        "title": "SAMVectorsearchSpecConfig",
        "type": "object"
      },
      "SAMVectorsearchStatus": {
        "description": "Smarter API Vectorsearch Manifest - Status class.",
        "properties": {
          "accountNumber": {
            "description": "Vectorsearch.status.account_number: The account owner of this Vectorsearch. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "username": {
            "description": "Vectorsearch.status.username: The Smarter user who created this Vectorsearch. Read only.",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username"
        ],
        "title": "SAMVectorsearchStatus",
        "type": "object"
      },
      "SAMVectorstore": {
        "description": "Smarter API Manifest - Vectorstore.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "Vectorstore",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMVectorstoreMetadata",
            "description": "Vectorstore.metadata[obj]: Required, the Vectorstore metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMVectorstoreSpec",
            "description": "Vectorstore.spec[obj]: Required, the Vectorstore specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMVectorstoreStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.status[obj]: Optional, Read-only. Stateful status information about the Vectorstore."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMVectorstore",
        "type": "object"
      },
      "SAMVectorstoreEmbeddings": {
        "description": "Vectorstore.spec.embeddings: how documents and queries are turned into vectors.",
        "properties": {
          "batchSize": {
            "default": 64,
            "description": "Vectorstore.__init__.embeddings.batchSize: chunks per embeddings request and upsert.",
            "maximum": 1000,
            "minimum": 1,
            "title": "Batchsize",
            "type": "integer"
          },
          "chunkOverlap": {
            "default": 200,
            "description": "Vectorstore.__init__.embeddings.chunkOverlap: characters shared by consecutive chunks.",
            "maximum": 2000,
            "minimum": 0,
            "title": "Chunkoverlap",
            "type": "integer"
          },
          "chunkSize": {
            "default": 1000,
            "description": "Vectorstore.__init__.embeddings.chunkSize: characters per chunk.",
            "maximum": 8000,
            "minimum": 100,
            "title": "Chunksize",
            "type": "integer"
          },
          "dimensions": {
            "anyOf": [
              {
                "maximum": 20000,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.__init__.embeddings.dimensions: ask the model for vectors of this size, if it supports it, e.g. text-embedding-3. It must equal index.dimension.",
            "title": "Dimensions"
          },
          "model": {
            "description": "Vectorstore.__init__.embeddings.model: the embeddings model, e.g. text-embedding-3-small.",
            "minLength": 1,
            "title": "Model",
            "type": "string"
          },
          "provider": {
            "description": "Vectorstore.__init__.embeddings.provider: a Provider with an OpenAI-compatible embeddings API, e.g. openai.",
            "minLength": 1,
            "title": "Provider",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "model"
        ],
        "title": "SAMVectorstoreEmbeddings",
        "type": "object"
      },
      "SAMVectorstoreIndex": {
        "description": "Vectorstore.spec.index: the index (Pinecone), or collection (Qdrant), of the database.",
        "properties": {
          "deletionProtection": {
            "default": false,
            "description": "Vectorstore.__init__.index.deletionProtection: refuse to destroy the database.",
            "title": "Deletionprotection",
            "type": "boolean"
          },
          "dimension": {
            "description": "Vectorstore.__init__.index.dimension: of the embeddings model's vectors.",
            "maximum": 20000,
            "minimum": 1,
            "title": "Dimension",
            "type": "integer"
          },
          "metric": {
            "default": "cosine",
            "description": "Vectorstore.__init__.index.metric: the distance metric.",
            "enum": [
              "cosine",
              "euclidean",
              "dotproduct"
            ],
            "title": "Metric",
            "type": "string"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 45,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.__init__.index.name: the index or collection's name, in lowercase letters, digits and hyphens. Defaults to the manifest's name, with the account number for a managed service.",
            "title": "Name"
          }
        },
        "required": [
          "dimension"
        ],
        "title": "SAMVectorstoreIndex",
        "type": "object"
      },
      "SAMVectorstoreMaintenance": {
        "description": "Vectorstore.spec.maintenance: what Celery Beat does, besides checking its status.",
        "properties": {
          "snapshotIntervalHours": {
            "default": 24,
            "description": "Vectorstore.__init__.maintenance.snapshotIntervalHours: how often.",
            "maximum": 720,
            "minimum": 1,
            "title": "Snapshotintervalhours",
            "type": "integer"
          },
          "snapshotRetention": {
            "default": 7,
            "description": "Vectorstore.__init__.maintenance.snapshotRetention: how many are kept. Older ones are deleted.",
            "maximum": 100,
            "minimum": 1,
            "title": "Snapshotretention",
            "type": "integer"
          },
          "snapshots": {
            "default": true,
            "description": "Vectorstore.__init__.maintenance.snapshots: take Qdrant snapshots, or Pinecone backups.",
            "title": "Snapshots",
            "type": "boolean"
          }
        },
        "title": "SAMVectorstoreMaintenance",
        "type": "object"
      },
      "SAMVectorstoreMetadata": {
        "description": "Smarter API Vectorstore Manifest - Metadata class.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "format": "date",
                        "type": "string"
                      },
                      {
                        "format": "date-time",
                        "type": "string"
                      },
                      {
                        "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
                        "type": "string"
                      },
                      {
                        "format": "uuid",
                        "type": "string"
                      },
                      {
                        "format": "binary",
                        "type": "string"
                      },
                      {
                        "items": {},
                        "type": "array"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The manifest annotations. Used for storing arbitrary metadata as\n            key-value pairs. Example: [{'smarter.sh/test-manifest/project-name': 'Scooby dooby do'}]. The\n            key should be a valid url-friendly string. The value accepts\n            multi-line string values (YAML block scalars) and various scalar types including\n            str, int, float, bool, datetime.date, datetime.datetime, decimal.Decimal, uuid.UUID, bytes, list, dict.\n            ",
            "title": "Annotations"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The description for this resource. Be brief. Keep it under 255 characters.",
            "title": "Description"
          },
          "name": {
            "description": "The camelCase name of the manifest resource",
            "title": "Name",
            "type": "string"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The tags of the manifest. Used for generic resource categorization and search. Example: ['tag1', 'tag2']",
            "title": "Tags"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The semantic version of the manifest. Example: 0.1.0",
            "title": "Version"
          }
        },
        "required": [
          "name",
          "description",
          "version"
        ],
        "title": "SAMVectorstoreMetadata",
        "type": "object"
      },
      "SAMVectorstorePinecone": {
        "description": "Vectorstore.spec.pinecone: where Pinecone runs a serverless index.",
        "properties": {
          "cloud": {
            "default": "aws",
            "description": "Vectorstore.__init__.pinecone.cloud",
            "enum": [
              "aws",
              "gcp",
              "azure"
            ],
            "title": "Cloud",
            "type": "string"
          },
          "region": {
            "default": "us-east-1",
            "description": "Vectorstore.__init__.pinecone.region",
            "minLength": 1,
            "title": "Region",
            "type": "string"
          }
        },
        "title": "SAMVectorstorePinecone",
        "type": "object"
      },
      "SAMVectorstoreSelfHosted": {
        "description": "Vectorstore.spec.selfHosted: the Qdrant server that Smarter runs on Kubernetes.",
        "properties": {
          "cpu": {
            "default": "500m",
            "description": "Vectorstore.__init__.selfHosted.cpu: requested, e.g. 500m.",
            "title": "Cpu",
            "type": "string"
          },
          "image": {
            "default": "qdrant/qdrant:v1.19.1",
            "description": "Vectorstore.__init__.selfHosted.image: the Qdrant image.",
            "title": "Image",
            "type": "string"
          },
          "memory": {
            "default": "1Gi",
            "description": "Vectorstore.__init__.selfHosted.memory: requested, e.g. 1Gi.",
            "title": "Memory",
            "type": "string"
          },
          "storage": {
            "default": "10Gi",
            "description": "Vectorstore.__init__.selfHosted.storage: the size of its volume, e.g. 10Gi.",
            "title": "Storage",
            "type": "string"
          },
          "storageClass": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.__init__.selfHosted.storageClass: of its volume. Defaults to the cluster's.",
            "title": "Storageclass"
          }
        },
        "title": "SAMVectorstoreSelfHosted",
        "type": "object"
      },
      "SAMVectorstoreSpec": {
        "description": "Smarter API Vectorstore Manifest Vectorstore.spec.",
        "properties": {
          "backend": {
            "description": "Vectorstore.__init__.backend: qdrant or pinecone.",
            "enum": [
              "qdrant",
              "pinecone"
            ],
            "title": "Backend",
            "type": "string"
          },
          "connection": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.__init__.connection: managed only. The name of an ApiConnection with the service's URL and API key Secret, e.g. https://api.pinecone.io, or a Qdrant Cloud cluster's URL.",
            "title": "Connection"
          },
          "embeddings": {
            "$ref": "#/components/schemas/SAMVectorstoreEmbeddings",
            "description": "Vectorstore.__init__.embeddings"
          },
          "hosting": {
            "default": "managed",
            "description": "Vectorstore.__init__.hosting: self_hosted, run by Smarter on Kubernetes (qdrant only), or managed, a service reached through the ApiConnection in connection.",
            "enum": [
              "self_hosted",
              "managed"
            ],
            "title": "Hosting",
            "type": "string"
          },
          "index": {
            "$ref": "#/components/schemas/SAMVectorstoreIndex",
            "description": "Vectorstore.__init__.index"
          },
          "isActive": {
            "default": true,
            "description": "Vectorstore.__init__.isActive: whether it may be used.",
            "title": "Isactive",
            "type": "boolean"
          },
          "maintenance": {
            "$ref": "#/components/schemas/SAMVectorstoreMaintenance",
            "description": "Vectorstore.__init__.maintenance"
          },
          "pinecone": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMVectorstorePinecone"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.__init__.pinecone: pinecone only."
          },
          "selfHosted": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMVectorstoreSelfHosted"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.__init__.selfHosted: self_hosted only."
          }
        },
        "required": [
          "backend",
          "index",
          "embeddings"
        ],
        "title": "SAMVectorstoreSpec",
        "type": "object"
      },
      "SAMVectorstoreStatus": {
        "description": "Smarter API Vectorstore Manifest - Status class.\n\nRead only.",
        "properties": {
          "accountNumber": {
            "description": "Vectorstore.status.accountNumber: the owner's account. Read only.",
            "title": "Accountnumber",
            "type": "string"
          },
          "apiKeySecret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.status.apiKeySecret: the Secret with a self-hosted database's API key.",
            "title": "Apikeysecret"
          },
          "created": {
            "description": "The date in which this resource was created. Read only.",
            "format": "date-time",
            "title": "Created",
            "type": "string"
          },
          "dependencies": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SAMDependency"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "dependencies[List]: The resources that depend on this resource, and that must be deleted, or stop referring to it, before it can be deleted. Lists only the resources that you can read. Read only.",
            "title": "Dependencies"
          },
          "deployedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Deployedat"
          },
          "documentCount": {
            "default": 0,
            "description": "Vectorstore.status.documentCount: its documents.",
            "title": "Documentcount",
            "type": "integer"
          },
          "endpoint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.status.endpoint: where it is reached.",
            "title": "Endpoint"
          },
          "indexName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.status.indexName: the Pinecone index, or Qdrant collection.",
            "title": "Indexname"
          },
          "lastCheckedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Lastcheckedat"
          },
          "lastMaintenanceAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Lastmaintenanceat"
          },
          "lastSnapshotAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Lastsnapshotat"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorstore.status.message: why, if it failed.",
            "title": "Message"
          },
          "modified": {
            "description": "The date in which this resource was most recently changed. Read only.",
            "format": "date-time",
            "title": "Modified",
            "type": "string"
          },
          "recordLocator": {
            "description": "recordLocator[String]: An optional identifier used to locate the resource record associated with this manifest. Read only.",
            "title": "Recordlocator",
            "type": "string"
          },
          "snapshotCount": {
            "default": 0,
            "description": "Vectorstore.status.snapshotCount: its snapshots, or backups.",
            "title": "Snapshotcount",
            "type": "integer"
          },
          "username": {
            "description": "Vectorstore.status.username: the owner. Read only.",
            "title": "Username",
            "type": "string"
          },
          "vectorCount": {
            "default": 0,
            "description": "Vectorstore.status.vectorCount: as of lastCheckedAt.",
            "title": "Vectorcount",
            "type": "integer"
          },
          "vectorstoreStatus": {
            "description": "Vectorstore.status.vectorstoreStatus: pending, provisioning, ready, stopped, failed or deleting.",
            "title": "Vectorstorestatus",
            "type": "string"
          }
        },
        "required": [
          "recordLocator",
          "created",
          "modified",
          "accountNumber",
          "username",
          "vectorstoreStatus"
        ],
        "title": "SAMVectorstoreStatus",
        "type": "object"
      },
      "SAMWebsearchPlugin": {
        "description": "Smarter API Manifest - WebsearchPlugin Model.",
        "properties": {
          "apiVersion": {
            "description": "apiVersion[String]: Required. The API version of the AbstractSAMBase.",
            "title": "Apiversion",
            "type": "string"
          },
          "kind": {
            "const": "WebsearchPlugin",
            "description": "kind[String]: Required. The kind of resource described by the manifest.",
            "title": "Kind",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/SAMPluginCommonMetadata",
            "description": "Plugin.metadata[obj]: Required, the Plugin metadata."
          },
          "spec": {
            "$ref": "#/components/schemas/SAMWebsearchPluginSpec",
            "description": "WebsearchPlugin.spec[obj]: Required, the WebsearchPlugin specification."
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SAMPluginCommonStatus"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Plugin.status[obj]: Optional, Read-only. Stateful status information about the Plugin."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec"
        ],
        "title": "SAMWebsearchPlugin",
        "type": "object"
      },
      "SAMWebsearchPluginSpec": {
        "description": "Smarter API Manifest - WebsearchPlugin.spec.",
        "properties": {
          "prompt": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecPrompt",
            "description": "Plugin.spec.prompt[obj]: the LLM prompt engineering to apply to the Plugin"
          },
          "selector": {
            "$ref": "#/components/schemas/SAMPluginCommonSpecSelector",
            "description": "Plugin.spec.selector[obj]: the selector logic to use for the Plugin"
          },
          "websearchData": {
            "$ref": "#/components/schemas/WebsearchData",
            "description": "WebsearchPlugin.spec.websearchData[obj]: the web search and web fetch configuration of the WebsearchPlugin."
          }
        },
        "required": [
          "selector",
          "prompt",
          "websearchData"
        ],
        "title": "SAMWebsearchPluginSpec",
        "type": "object"
      },
      "SecretApiSecret": {
        "additionalProperties": false,
        "description": "A Secret's metadata: a :class:`smarter.apps.secret.models.Secret`, without its value.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the Secret now: they own it, and nothing uses it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "expiresAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the Secret expires, if it does.",
            "title": "Expiresat"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "lastAccessed": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When the platform last read its value.",
            "title": "Lastaccessed"
          },
          "manifestUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url of the Secret's manifest in the web console.",
            "title": "Manifesturl"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case, e.g. openai_api_key.",
            "title": "Name",
            "type": "string"
          },
          "ready": {
            "description": "Whether the Secret has a value that can be decrypted.",
            "title": "Ready",
            "type": "boolean"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The Secret's owner."
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "name",
          "userProfile",
          "ready",
          "canDelete"
        ],
        "title": "SecretApiSecret",
        "type": "object"
      },
      "SecretApiSecretRef": {
        "additionalProperties": false,
        "description": "A Secret, as another resource refers to it, e.g. a Provider's api key: its name, never its value.",
        "properties": {
          "canDelete": {
            "description": "Whether the requesting user may delete the Secret now.",
            "title": "Candelete",
            "type": "boolean"
          },
          "id": {
            "description": "The Secret's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "manifestUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The url of the Secret's manifest in the web console.",
            "title": "Manifesturl"
          },
          "name": {
            "description": "The Secret's name.",
            "title": "Name",
            "type": "string"
          },
          "ready": {
            "description": "Whether the Secret has a value that can be decrypted.",
            "title": "Ready",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "ready",
          "canDelete"
        ],
        "title": "SecretApiSecretRef",
        "type": "object"
      },
      "SkillData": {
        "description": "Smarter API - SkillPlugin.spec.skillData: an Agent Skill.\n\nExactly one of ``skill`` or ``source`` is required.",
        "properties": {
          "resources": {
            "anyOf": [
              {
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SkillPlugin.spec.resources[obj]: the skill's bundled files, e.g. references/, scripts/ and assets/, keyed by their path relative to the skill root, as SKILL.md refers to them. Only valid with 'skill'.",
            "title": "Resources"
          },
          "skill": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SkillPlugin.spec.skill[str]: the verbatim contents of a SKILL.md file: YAML frontmatter, containing at least 'name' and 'description', followed by Markdown instructions. Use a YAML literal block scalar (|) to preserve the Markdown exactly. See https://agentskills.io/specification",
            "title": "Skill"
          },
          "source": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SkillSource"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "SkillPlugin.spec.source[obj]: the remote location of the skill, in lieu of 'skill'."
          }
        },
        "title": "SkillData",
        "type": "object"
      },
      "SkillSource": {
        "description": "Smarter API - SkillPlugin.spec.skillData.source: the remote location of a skill.",
        "properties": {
          "url": {
            "description": "SkillPlugin.spec.source.url[str]: the https URL of the skill. Either a GitHub URL of a skill directory (e.g. https://github.com/anthropics/skills/tree/main/skills/pdf) or of a SKILL.md file, or any https URL of a SKILL.md file. The skill and its bundled files are retrieved when the manifest is applied.",
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "SkillSource",
        "type": "object"
      },
      "SqlData": {
        "description": "Smarter API - generic API Connection class.",
        "properties": {
          "limit": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 100,
            "description": "The maximum number of rows to return from the query. Must be a non-negative integer.",
            "title": "Limit"
          },
          "parameters": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/Parameter"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A JSON dict containing parameter names and data types. Example: {'unit': {'type': 'string', 'enum': ['Celsius', 'Fahrenheit'], 'description': 'The temperature unit to use.'}}",
            "title": "Parameters"
          },
          "sqlQuery": {
            "description": "The SQL query that this plugin will execute when invoked by the user prompt.",
            "title": "Sqlquery",
            "type": "string"
          },
          "testValues": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/TestValue"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A JSON dict containing test values for each parameter. Example: {'product_id': 1234}.",
            "title": "Testvalues"
          }
        },
        "required": [
          "sqlQuery"
        ],
        "title": "SqlData",
        "type": "object"
      },
      "TestValue": {
        "description": "TestValue class for SqlPlugin and ApiPlugin test values.",
        "properties": {
          "name": {
            "description": "The name of the parameter being tested.",
            "title": "Name",
            "type": "string"
          },
          "value": {
            "description": "The test value for the parameter.",
            "title": "Value"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "title": "TestValue",
        "type": "object"
      },
      "UrlParam": {
        "description": "Model for storing url param k-v pairs.",
        "properties": {
          "key": {
            "description": "The key (ie 'name') of the url param.",
            "title": "Key",
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "description": "The value for the key.",
            "title": "Value"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "title": "UrlParam",
        "type": "object"
      },
      "VectorsearchApiVectorsearch": {
        "additionalProperties": false,
        "description": "A Vectorsearch, a retrieval pipeline over a vectorstore: a :class:`smarter.apps.vectorsearch.models.Vectorsearch`.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "authSecret": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorsearch.auth_secret: the Secret's id, if any.",
            "title": "Authsecret"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the Vectorsearch now: they own it, and nothing uses it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "fetchK": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorsearch.fetch_k: the candidates of an mmr search.",
            "title": "Fetchk"
          },
          "hashedId": {
            "description": "The Vectorsearch's hashed id, e.g. rMTAwMDAwMQx, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "isEnabled": {
            "description": "Vectorsearch.is_enabled.",
            "title": "Isenabled",
            "type": "boolean"
          },
          "k": {
            "description": "Vectorsearch.k: the number of chunks to return.",
            "minimum": 0,
            "title": "K",
            "type": "integer"
          },
          "lambdaMult": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorsearch.lambda_mult: an mmr search's diversity.",
            "title": "Lambdamult"
          },
          "manifestUrl": {
            "description": "The url of the Vectorsearch's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "metadataFilter": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JsonValue"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorsearch.metadata_filter."
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "scoreThreshold": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Vectorsearch.score_threshold.",
            "title": "Scorethreshold"
          },
          "searchType": {
            "description": "Vectorsearch.search_type.",
            "enum": [
              "similarity",
              "similarity_score_threshold",
              "mmr"
            ],
            "title": "Searchtype",
            "type": "string"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The Vectorsearch's owner."
          },
          "vectorstore": {
            "description": "Vectorsearch.vectorstore: the vectorstore's id.",
            "title": "Vectorstore",
            "type": "integer"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "manifestUrl",
          "searchType",
          "k",
          "isEnabled",
          "vectorstore"
        ],
        "title": "VectorsearchApiVectorsearch",
        "type": "object"
      },
      "VectorsearchSearchType": {
        "description": "Supported retrieval strategies for a Vectorsearch query.",
        "enum": [
          "similarity",
          "similarity_score_threshold",
          "mmr"
        ],
        "title": "VectorsearchSearchType",
        "type": "string"
      },
      "VectorstoreApiAddText": {
        "additionalProperties": false,
        "description": "The JSON request body that adds a text, or the document at a url, to a vectorstore.\n\nFiles are multipart/form-data.",
        "properties": {
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Metadata to store with each chunk.",
            "title": "Metadata"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The text's name. Defaults to text.",
            "title": "Name"
          },
          "text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The text.",
            "title": "Text"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "A public url, whose document is fetched now.",
            "title": "Url"
          }
        },
        "title": "VectorstoreApiAddText",
        "type": "object"
      },
      "VectorstoreApiDocument": {
        "additionalProperties": false,
        "description": "A document of a vectorstore: a :class:`smarter.apps.vectorstore.models.VectorstoreDocument`, without its content.",
        "properties": {
          "chunkCount": {
            "description": "The number of its chunks.",
            "minimum": 0,
            "title": "Chunkcount",
            "type": "integer"
          },
          "contentType": {
            "description": "Its media type, e.g. application/pdf.",
            "title": "Contenttype",
            "type": "string"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "hashedId": {
            "description": "The document's hashed id.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "loadedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When its chunks were loaded.",
            "title": "Loadedat"
          },
          "metadata": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The metadata stored with each of its chunks.",
            "title": "Metadata",
            "type": "object"
          },
          "name": {
            "description": "The document's name, e.g. its file name or url.",
            "title": "Name",
            "type": "string"
          },
          "sha256": {
            "description": "The SHA-256 of its content, which finds duplicates.",
            "title": "Sha256",
            "type": "string"
          },
          "sizeBytes": {
            "description": "Its size.",
            "minimum": 0,
            "title": "Sizebytes",
            "type": "integer"
          },
          "source": {
            "description": "Where the document came from.",
            "enum": [
              "upload",
              "url",
              "text",
              "file"
            ],
            "title": "Source",
            "type": "string"
          },
          "status": {
            "description": "Whether its chunks are loaded.",
            "enum": [
              "pending",
              "loading",
              "loaded",
              "failed",
              "deleting"
            ],
            "title": "Status",
            "type": "string"
          },
          "statusMessage": {
            "description": "Its status, for a person.",
            "title": "Statusmessage",
            "type": "string"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "source",
          "contentType",
          "sha256",
          "sizeBytes",
          "metadata",
          "status",
          "statusMessage",
          "chunkCount"
        ],
        "title": "VectorstoreApiDocument",
        "type": "object"
      },
      "VectorstoreApiDocumentDeleted": {
        "additionalProperties": false,
        "description": "A document that is being removed, with its chunks.",
        "properties": {
          "document": {
            "description": "The document's name.",
            "title": "Document",
            "type": "string"
          },
          "status": {
            "description": "deleting.",
            "enum": [
              "pending",
              "loading",
              "loaded",
              "failed",
              "deleting"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "document",
          "status"
        ],
        "title": "VectorstoreApiDocumentDeleted",
        "type": "object"
      },
      "VectorstoreApiDocuments": {
        "additionalProperties": false,
        "description": "A vectorstore's documents, newest first.",
        "properties": {
          "documents": {
            "items": {
              "$ref": "#/components/schemas/VectorstoreApiDocument"
            },
            "title": "Documents",
            "type": "array"
          }
        },
        "required": [
          "documents"
        ],
        "title": "VectorstoreApiDocuments",
        "type": "object"
      },
      "VectorstoreApiDocumentsAdded": {
        "additionalProperties": false,
        "description": "The documents that a request added, the ones that the vectorstore already had, and whether they're queued.",
        "properties": {
          "documents": {
            "description": "The documents that were added.",
            "items": {
              "$ref": "#/components/schemas/VectorstoreApiDocument"
            },
            "title": "Documents",
            "type": "array"
          },
          "duplicates": {
            "description": "The documents with the same content, already added.",
            "items": {
              "$ref": "#/components/schemas/VectorstoreApiDocument"
            },
            "title": "Duplicates",
            "type": "array"
          },
          "message": {
            "description": "Why the documents are not queued, if they aren't.",
            "title": "Message",
            "type": "string"
          },
          "queued": {
            "description": "Whether the new documents are queued to be loaded. Only a ready vectorstore loads them.",
            "title": "Queued",
            "type": "boolean"
          }
        },
        "required": [
          "documents",
          "duplicates",
          "queued",
          "message"
        ],
        "title": "VectorstoreApiDocumentsAdded",
        "type": "object"
      },
      "VectorstoreApiRestored": {
        "additionalProperties": false,
        "description": "A vectorstore whose data was replaced with one of its snapshots.",
        "properties": {
          "restored": {
            "description": "The snapshot's name.",
            "title": "Restored",
            "type": "string"
          },
          "vectorCount": {
            "description": "The number of its vectors now.",
            "title": "Vectorcount",
            "type": "integer"
          },
          "vectorstore": {
            "description": "The vectorstore's name.",
            "title": "Vectorstore",
            "type": "string"
          }
        },
        "required": [
          "vectorstore",
          "restored",
          "vectorCount"
        ],
        "title": "VectorstoreApiRestored",
        "type": "object"
      },
      "VectorstoreApiSearch": {
        "additionalProperties": false,
        "description": "The request body of a search of a vectorstore.",
        "properties": {
          "fetchK": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The number of candidates that mmr chooses among.",
            "title": "Fetchk"
          },
          "filter": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Metadata that every result must match.",
            "title": "Filter"
          },
          "k": {
            "default": 4,
            "description": "The number of results, at most 50.",
            "minimum": 1,
            "title": "K",
            "type": "integer"
          },
          "lambdaMult": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "mmr's balance of relevance and diversity.",
            "title": "Lambdamult"
          },
          "query": {
            "description": "The text to find similar chunks of.",
            "title": "Query",
            "type": "string"
          },
          "scoreThreshold": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The minimum score of similarity_score_threshold.",
            "title": "Scorethreshold"
          },
          "searchType": {
            "default": "similarity",
            "description": "How to search.",
            "enum": [
              "similarity",
              "similarity_score_threshold",
              "mmr"
            ],
            "title": "Searchtype",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "title": "VectorstoreApiSearch",
        "type": "object"
      },
      "VectorstoreApiSearchResult": {
        "additionalProperties": false,
        "description": "A chunk that a search found.",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The chunk's id in the database.",
            "title": "Id"
          },
          "metadata": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The chunk's metadata.",
            "title": "Metadata",
            "type": "object"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Its similarity to the query.",
            "title": "Score"
          },
          "text": {
            "description": "The chunk's text.",
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text",
          "metadata"
        ],
        "title": "VectorstoreApiSearchResult",
        "type": "object"
      },
      "VectorstoreApiSearchResults": {
        "additionalProperties": false,
        "description": "The results of a search of a vectorstore, most similar first.",
        "properties": {
          "results": {
            "items": {
              "$ref": "#/components/schemas/VectorstoreApiSearchResult"
            },
            "title": "Results",
            "type": "array"
          },
          "vectorstore": {
            "description": "The vectorstore's name.",
            "title": "Vectorstore",
            "type": "string"
          }
        },
        "required": [
          "vectorstore",
          "results"
        ],
        "title": "VectorstoreApiSearchResults",
        "type": "object"
      },
      "VectorstoreApiSnapshot": {
        "additionalProperties": false,
        "description": "A snapshot of a vectorstore: a :class:`smarter.apps.vectorstore.models.VectorstoreSnapshot`, a Qdrant snapshot or Pinecone backup.",
        "properties": {
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When it was taken.",
            "title": "Createdat"
          },
          "hashedId": {
            "description": "The snapshot's hashed id.",
            "title": "Hashedid",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "description": "The snapshot's name in the database.",
            "title": "Name",
            "type": "string"
          },
          "scheduled": {
            "description": "Whether maintenance took it, rather than a person.",
            "title": "Scheduled",
            "type": "boolean"
          },
          "sizeBytes": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Its size, if the database reports it.",
            "title": "Sizebytes"
          },
          "status": {
            "enum": [
              "creating",
              "ready",
              "failed"
            ],
            "title": "Status",
            "type": "string"
          },
          "statusMessage": {
            "description": "Its status, for a person.",
            "title": "Statusmessage",
            "type": "string"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "vectorCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The number of vectors it holds.",
            "title": "Vectorcount"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "status",
          "statusMessage",
          "scheduled"
        ],
        "title": "VectorstoreApiSnapshot",
        "type": "object"
      },
      "VectorstoreApiSnapshots": {
        "additionalProperties": false,
        "description": "A vectorstore's snapshots.",
        "properties": {
          "snapshots": {
            "items": {
              "$ref": "#/components/schemas/VectorstoreApiSnapshot"
            },
            "title": "Snapshots",
            "type": "array"
          }
        },
        "required": [
          "snapshots"
        ],
        "title": "VectorstoreApiSnapshots",
        "type": "object"
      },
      "VectorstoreApiStatus": {
        "additionalProperties": false,
        "description": "A vectorstore's status and statistics, checked now.",
        "properties": {
          "message": {
            "description": "Its status, for a person.",
            "title": "Message",
            "type": "string"
          },
          "stats": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The database's statistics.",
            "title": "Stats",
            "type": "object"
          },
          "status": {
            "description": "Its deployment's status.",
            "enum": [
              "pending",
              "provisioning",
              "ready",
              "stopped",
              "failed",
              "deleting"
            ],
            "title": "Status",
            "type": "string"
          },
          "vectorCount": {
            "description": "The number of its vectors.",
            "title": "Vectorcount",
            "type": "integer"
          },
          "vectorstore": {
            "description": "The vectorstore's name.",
            "title": "Vectorstore",
            "type": "string"
          }
        },
        "required": [
          "vectorstore",
          "status",
          "message",
          "vectorCount",
          "stats"
        ],
        "title": "VectorstoreApiStatus",
        "type": "object"
      },
      "VectorstoreApiVectorstore": {
        "additionalProperties": false,
        "description": "A vectorstore: a :class:`smarter.apps.vectorstore.models.VectorstoreMeta`.\n\nIts related rows are their names.",
        "properties": {
          "annotations": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/JsonValue"
                  },
                  "type": "object"
                },
                "type": "array"
              },
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.annotations.",
            "title": "Annotations"
          },
          "apiKeySecret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of the Secret of its api key, never the key.",
            "title": "Apikeysecret"
          },
          "backend": {
            "description": "The vector database.",
            "enum": [
              "qdrant",
              "pinecone"
            ],
            "title": "Backend",
            "type": "string"
          },
          "canDelete": {
            "description": "Whether the requesting user may delete the vectorstore now: they own it, and nothing uses it.",
            "title": "Candelete",
            "type": "boolean"
          },
          "connection": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of its ApiConnection, if any.",
            "title": "Connection"
          },
          "createdAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.created_at.",
            "title": "Createdat"
          },
          "deletionProtection": {
            "description": "Whether its index refuses to be deleted.",
            "title": "Deletionprotection",
            "type": "boolean"
          },
          "deployedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When it was deployed.",
            "title": "Deployedat"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.description.",
            "title": "Description"
          },
          "dimension": {
            "description": "The dimension of its vectors.",
            "minimum": 0,
            "title": "Dimension",
            "type": "integer"
          },
          "documentCount": {
            "description": "The number of its documents.",
            "minimum": 0,
            "title": "Documentcount",
            "type": "integer"
          },
          "embeddingsModel": {
            "description": "The embeddings model.",
            "title": "Embeddingsmodel",
            "type": "string"
          },
          "embeddingsProvider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The name of its embeddings' Provider.",
            "title": "Embeddingsprovider"
          },
          "endpointUrl": {
            "description": "The url of its database, once deployed.",
            "title": "Endpointurl",
            "type": "string"
          },
          "hashedId": {
            "description": "The vectorstore's hashed id, which its urls use.",
            "title": "Hashedid",
            "type": "string"
          },
          "hosting": {
            "description": "Who runs the database: the platform, or the vendor.",
            "enum": [
              "self_hosted",
              "managed"
            ],
            "title": "Hosting",
            "type": "string"
          },
          "id": {
            "description": "The row's primary key.",
            "title": "Id",
            "type": "integer"
          },
          "indexName": {
            "description": "The name of its index or collection.",
            "title": "Indexname",
            "type": "string"
          },
          "isActive": {
            "description": "Whether LLMClients use the vectorstore.",
            "title": "Isactive",
            "type": "boolean"
          },
          "lastCheckedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When its status was last checked.",
            "title": "Lastcheckedat"
          },
          "lastMaintenanceAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When its maintenance last ran.",
            "title": "Lastmaintenanceat"
          },
          "lastSnapshotAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "When its last snapshot was taken.",
            "title": "Lastsnapshotat"
          },
          "manifestUrl": {
            "description": "The url of the vectorstore's manifest in the web console.",
            "title": "Manifesturl",
            "type": "string"
          },
          "metric": {
            "description": "The distance metric of its index.",
            "enum": [
              "cosine",
              "euclidean",
              "dotproduct"
            ],
            "title": "Metric",
            "type": "string"
          },
          "name": {
            "description": "MetaDataModel.name, in snake_case.",
            "title": "Name",
            "type": "string"
          },
          "snapshotCount": {
            "description": "The number of its snapshots.",
            "minimum": 0,
            "title": "Snapshotcount",
            "type": "integer"
          },
          "spec": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The manifest's spec, as it was applied. See SAMVectorstore.",
            "title": "Spec",
            "type": "object"
          },
          "stats": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "description": "The database's statistics, as of the last check.",
            "title": "Stats",
            "type": "object"
          },
          "status": {
            "description": "Its deployment's status.",
            "enum": [
              "pending",
              "provisioning",
              "ready",
              "stopped",
              "failed",
              "deleting"
            ],
            "title": "Status",
            "type": "string"
          },
          "statusMessage": {
            "description": "Its status, for a person.",
            "title": "Statusmessage",
            "type": "string"
          },
          "tags": {
            "description": "MetaDataModel.tags, by name.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updatedAt": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TimestampedModel.updated_at.",
            "title": "Updatedat"
          },
          "userProfile": {
            "$ref": "#/components/schemas/AccountApiUserProfile",
            "description": "The vectorstore's owner."
          },
          "vectorCount": {
            "description": "The number of its vectors, as of the last check.",
            "title": "Vectorcount",
            "type": "integer"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MetaDataModel.version, e.g. 1.0.0.",
            "title": "Version"
          }
        },
        "required": [
          "id",
          "hashedId",
          "name",
          "userProfile",
          "canDelete",
          "documentCount",
          "snapshotCount",
          "manifestUrl",
          "spec",
          "backend",
          "hosting",
          "isActive",
          "dimension",
          "metric",
          "deletionProtection",
          "embeddingsModel",
          "status",
          "statusMessage",
          "indexName",
          "endpointUrl",
          "vectorCount",
          "stats"
        ],
        "title": "VectorstoreApiVectorstore",
        "type": "object"
      },
      "WebsearchData": {
        "description": "Smarter API - WebsearchPlugin.spec.websearchData.",
        "properties": {
          "allowedDomains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.allowedDomains[list]: if not empty, only these domains, and their subdomains, may be searched and read.",
            "title": "Alloweddomains"
          },
          "blockedDomains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.blockedDomains[list]: these domains, and their subdomains, are never searched nor read.",
            "title": "Blockeddomains"
          },
          "cacheTtl": {
            "default": 3600,
            "description": "WebsearchPlugin.spec.cacheTtl[int]: seconds to cache search results and web pages. 0 disables caching.",
            "maximum": 86400,
            "minimum": 0,
            "title": "Cachettl",
            "type": "integer"
          },
          "fetch": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WebsearchFetch"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.fetch[obj]: enables reading web pages by URL."
          },
          "search": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WebsearchSearch"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.search[obj]: enables web search. Requires a web search API key."
          },
          "timeout": {
            "default": 15,
            "description": "WebsearchPlugin.spec.timeout[int]: seconds to wait for each web request, 1 to 60.",
            "maximum": 60,
            "minimum": 1,
            "title": "Timeout",
            "type": "integer"
          }
        },
        "title": "WebsearchData",
        "type": "object"
      },
      "WebsearchFetch": {
        "description": "Smarter API - WebsearchPlugin.spec.websearchData.fetch: reading web pages by URL.",
        "properties": {
          "maxCharacters": {
            "default": 20000,
            "description": "WebsearchPlugin.spec.fetch.maxCharacters[int]: the maximum number of characters of a web page to return, 1000 to 100000. Longer pages are truncated.",
            "maximum": 100000,
            "minimum": 1000,
            "title": "Maxcharacters",
            "type": "integer"
          },
          "respectRobotsTxt": {
            "default": true,
            "description": "WebsearchPlugin.spec.fetch.respectRobotsTxt[bool]: whether to obey websites' robots.txt files.",
            "title": "Respectrobotstxt",
            "type": "boolean"
          }
        },
        "title": "WebsearchFetch",
        "type": "object"
      },
      "WebsearchSearch": {
        "description": "Smarter API - WebsearchPlugin.spec.websearchData.search: web search, via a web search API.",
        "properties": {
          "apiKey": {
            "description": "WebsearchPlugin.spec.search.apiKey[str]: the name of the Smarter Secret that contains the web search API's api key. The api key itself is never included in the manifest.",
            "title": "Apikey",
            "type": "string"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.search.country[str]: an ISO 3166-1 alpha-2 country code, e.g. us, to localize results.",
            "title": "Country"
          },
          "freshness": {
            "anyOf": [
              {
                "enum": [
                  "day",
                  "week",
                  "month",
                  "year"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.search.freshness[str]: by default, restrict results to those published within the last ['day', 'week', 'month', 'year']. The LLM can override this per search.",
            "title": "Freshness"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "WebsearchPlugin.spec.search.language[str]: an ISO 639-1 language code, e.g. en, to localize results.",
            "title": "Language"
          },
          "maxResults": {
            "default": 5,
            "description": "WebsearchPlugin.spec.search.maxResults[int]: the maximum number of results per search, 1 to 20.",
            "maximum": 20,
            "minimum": 1,
            "title": "Maxresults",
            "type": "integer"
          },
          "provider": {
            "description": "WebsearchPlugin.spec.search.provider[str]: the web search API. One of: ['brave', 'tavily']",
            "enum": [
              "brave",
              "tavily"
            ],
            "title": "Provider",
            "type": "string"
          },
          "safeSearch": {
            "default": "moderate",
            "description": "WebsearchPlugin.spec.search.safeSearch[str]: adult content filtering. One of: ['off', 'moderate', 'strict']",
            "enum": [
              "off",
              "moderate",
              "strict"
            ],
            "title": "Safesearch",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "apiKey"
        ],
        "title": "WebsearchSearch",
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "An api key, as: Token <api key>.",
        "in": "header",
        "name": "Authorization",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "contact": {
      "name": "The Smarter Project",
      "url": "https://smarter.sh"
    },
    "description": "The api of the smarter cli and of the Smarter SDKs. Every response is journaled: its body has the journal's api and metadata, beside the command's data or message, or an error. The chat api's requests and responses are the Smarter Chat api contract's, version 2. Generated from the platform's Pydantic models by smarter.apps.api.v1.contract.openapi; do not edit. See https://docs.smarter.sh.",
    "license": {
      "name": "AGPL-3.0",
      "url": "https://www.gnu.org/licenses/agpl-3.0.html"
    },
    "summary": "Apply, get, describe, validate and delete the resources that SAM manifests declare, and chat with LLMClients.",
    "title": "Smarter api",
    "version": "v1"
  },
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "openapi": "3.1.0",
  "paths": {
    "/accounts/": {
      "get": {
        "description": "Every account. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "account_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AccountApiAccountDetail"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List accounts",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/contacts/": {
      "get": {
        "description": "Every account's contacts, who receive its notices. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "contact_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AccountApiContact"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List account contacts",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/contacts/{account_contact_id}/": {
      "get": {
        "description": "An account contact, by its id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "contact_retrieve",
        "parameters": [
          {
            "description": "The account contact's id.",
            "in": "path",
            "name": "account_contact_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountApiContact"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An account contact",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/user-profiles/": {
      "get": {
        "description": "Every user profile: each user's membership of an account. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "user_profile_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AccountApiProfile"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List user profiles",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/user-profiles/{user_profile_id}/": {
      "get": {
        "description": "A user profile, by its id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "user_profile_retrieve",
        "parameters": [
          {
            "description": "The user profile's id.",
            "in": "path",
            "name": "user_profile_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountApiProfile"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A user profile",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/users/": {
      "get": {
        "description": "Every user. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "user_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/AccountApiUserDetail"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List users",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/users/{user_id}/": {
      "get": {
        "description": "A user, by its id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "user_retrieve",
        "parameters": [
          {
            "description": "The user's id.",
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountApiUserDetail"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A user",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/{account_id}/": {
      "get": {
        "description": "An account, by its id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "account_retrieve",
        "parameters": [
          {
            "description": "The account's id.",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountApiAccountDetail"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/cli/apply/": {
      "post": {
        "description": "Create the resource that a manifest declares, or update it to match the manifest.",
        "operationId": "apply",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SAMManifest"
              }
            },
            "application/x-yaml": {
              "schema": {
                "description": "A SAM manifest, as YAML.",
                "type": "string"
              }
            }
          },
          "description": "A SAM manifest, as YAML or as JSON.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiApplyResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Apply a manifest",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/delete/{kind}/": {
      "post": {
        "description": "Delete a resource.",
        "operationId": "delete",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          },
          {
            "description": "The resource's name, its manifest's metadata.name.",
            "in": "query",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiMessageResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Delete a resource",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/deploy/{kind}/": {
      "post": {
        "description": "Deploy a resource of a deployable kind, e.g. an LLMClient. Deployment may create cloud infrastructure.",
        "operationId": "deploy",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          },
          {
            "description": "The resource's name, its manifest's metadata.name.",
            "in": "query",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiMessageResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Deploy a resource",
        "tags": [
          "deployment"
        ]
      }
    },
    "/cli/describe/{kind}/": {
      "post": {
        "description": "A resource's manifest, with its read-only status.",
        "operationId": "describe",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          },
          {
            "description": "The resource's name, its manifest's metadata.name.",
            "in": "query",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiManifestResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Describe a resource",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/example-manifest/{kind}/": {
      "post": {
        "description": "An example manifest of a kind.",
        "operationId": "example_manifest",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiManifestResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "security": [],
        "summary": "An example manifest",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/get/{kind}/": {
      "post": {
        "description": "List the resources of a kind that the api key's user may see.",
        "operationId": "get",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          },
          {
            "description": "Only the resource with this name. Other query parameters are passed to the kind's broker as criteria.",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiGetResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "List resources",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/json-schema/{kind}/": {
      "post": {
        "description": "The JSON Schema of a kind's manifests. The same schemas are published in the repository, as smarter/smarter/apps/api/v1/contract/sam/<Kind>.schema.json.",
        "operationId": "json_schema",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiJsonSchemaResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "security": [],
        "summary": "A kind's JSON Schema",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/logs/{kind}/": {
      "post": {
        "description": "A resource's logs.",
        "operationId": "logs",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          },
          {
            "description": "The resource's name, its manifest's metadata.name.",
            "in": "query",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiMessageResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "A resource's logs",
        "tags": [
          "deployment"
        ]
      }
    },
    "/cli/prompt/config/{name}/": {
      "post": {
        "description": "The configuration of a chat with an LLMClient, and its session, as the Smarter Chat api contract's version 2 configuration response.",
        "operationId": "prompt_config",
        "parameters": [
          {
            "description": "The LLMClient's name.",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "A unique identifier of the client, e.g. a machine id. The platform caches the client's chat session under it, so that a later prompt continues the same chat.",
            "in": "query",
            "name": "uid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "true starts a new chat session, rather than continuing the client's last one.",
            "in": "query",
            "name": "new_session",
            "required": false,
            "schema": {
              "default": "false",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptChatApiConfigResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "An LLMClient's chat configuration",
        "tags": [
          "chat"
        ]
      }
    },
    "/cli/prompt/{name}/": {
      "post": {
        "description": "Send a message to an LLMClient, and return its chat completion. The chat session is cached under the uid, so that the next prompt continues it. The completion is the Smarter Chat api contract's version 1 completion, decoded from the JSON string of its body.",
        "operationId": "prompt",
        "parameters": [
          {
            "description": "The LLMClient's name.",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "A unique identifier of the client, e.g. a machine id. The platform caches the client's chat session under it, so that a later prompt continues the same chat.",
            "in": "query",
            "name": "uid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "true starts a new chat session, rather than continuing the client's last one.",
            "in": "query",
            "name": "new_session",
            "required": false,
            "schema": {
              "default": "false",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CliApiPromptBody"
              }
            }
          },
          "description": "The user's message.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiPromptResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Prompt an LLMClient",
        "tags": [
          "chat"
        ]
      }
    },
    "/cli/resources/": {
      "post": {
        "description": "The kinds of resources that the cli api manages.",
        "operationId": "resources",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiResourcesResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Resource kinds",
        "tags": [
          "platform"
        ]
      }
    },
    "/cli/status/": {
      "post": {
        "description": "The status of the platform's infrastructure and compute.",
        "operationId": "status",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiStatusResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Platform status",
        "tags": [
          "platform"
        ]
      }
    },
    "/cli/undeploy/{kind}/": {
      "post": {
        "description": "Undeploy a deployed resource.",
        "operationId": "undeploy",
        "parameters": [
          {
            "description": "The resource's kind, as it is written in a manifest, e.g. Guardrail. Case-insensitive.",
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SAMKind"
            }
          },
          {
            "description": "The resource's name, its manifest's metadata.name.",
            "in": "query",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiMessageResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Undeploy a resource",
        "tags": [
          "deployment"
        ]
      }
    },
    "/cli/validate/": {
      "post": {
        "description": "Validate a manifest against its kind's model, without saving it. An invalid manifest is a successful response, whose data lists the manifest's errors.",
        "operationId": "validate",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SAMManifest"
              }
            },
            "application/x-yaml": {
              "schema": {
                "description": "A SAM manifest, as YAML.",
                "type": "string"
              }
            }
          },
          "description": "A SAM manifest, as YAML or as JSON.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiValidateResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Validate a manifest",
        "tags": [
          "manifests"
        ]
      }
    },
    "/cli/version/": {
      "post": {
        "description": "The versions of the platform and its packages, and the smarter cli's latest version.",
        "operationId": "version",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiVersionResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Versions",
        "tags": [
          "platform"
        ]
      }
    },
    "/cli/whoami/": {
      "post": {
        "description": "The api key's user and account.",
        "operationId": "whoami",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiWhoamiResponse"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CliApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid manifest, 401 or 403 without a valid api key, 404 for a resource that does not exist."
          }
        },
        "summary": "Who am I",
        "tags": [
          "platform"
        ]
      }
    },
    "/guardrails/": {
      "get": {
        "description": "The Guardrails that the user may read, by priority and name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "guardrail_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/GuardrailApiGuardrail"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List Guardrails",
        "tags": [
          "guardrails"
        ]
      }
    },
    "/guardrails/{id}/": {
      "get": {
        "description": "A Guardrail that the user may read. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "guardrail_retrieve",
        "parameters": [
          {
            "description": "The Guardrail's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GuardrailApiGuardrail"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Guardrail",
        "tags": [
          "guardrails"
        ]
      }
    },
    "/guardrails/{id}/evaluate/": {
      "post": {
        "description": "Run a Guardrail on a text, as the user's message (input) or the LLM's reply (output), and return what it would do. It records no events. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "guardrail_evaluate",
        "parameters": [
          {
            "description": "The Guardrail's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GuardrailApiEvaluateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GuardrailApiEvaluation"
                }
              }
            },
            "description": "The dry run's result."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a Guardrail that the user may not read."
          }
        },
        "summary": "Dry-run a Guardrail",
        "tags": [
          "guardrails"
        ]
      }
    },
    "/guardrails/{id}/events/": {
      "get": {
        "description": "The latest 100 events of a Guardrail that the user owns, newest first: what it did to prompts. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "guardrail_events",
        "parameters": [
          {
            "description": "The Guardrail's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only the events that a person has reviewed (true), or has not (false).",
            "in": "query",
            "name": "reviewed",
            "required": false,
            "schema": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only the events with this disposition, e.g. blocked.",
            "in": "query",
            "name": "disposition",
            "required": false,
            "schema": {
              "enum": [
                "logged",
                "flagged",
                "redacted",
                "transformed",
                "blocked",
                "escalated",
                "monitored",
                "error"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GuardrailApiEvents"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Guardrail's events",
        "tags": [
          "guardrails"
        ]
      }
    },
    "/journal/": {
      "get": {
        "description": "One page of the journal's entries, newest first unless sorted, without their request and response documents. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "journal_list",
        "parameters": [
          {
            "description": "The page, from 1.",
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "type": "integer"
            }
          },
          {
            "description": "The entries of a page, at most 100.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 25,
              "type": "integer"
            }
          },
          {
            "description": "Text that an entry's key, thing or command contains.",
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The column to sort by, e.g. createdAt, or -createdAt to sort it in descending order.",
            "in": "query",
            "name": "ordering",
            "required": false,
            "schema": {
              "enum": [
                "createdAt",
                "-createdAt",
                "user",
                "-user",
                "thing",
                "-thing",
                "command",
                "-command",
                "statusCode",
                "-statusCode"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SAMJournalApiPage"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List journal entries",
        "tags": [
          "journal"
        ]
      }
    },
    "/journal/{key}/": {
      "get": {
        "description": "A journal entry, by its key, with its request and response documents. The request document holds the caller's headers, including its api key. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "journal_retrieve",
        "parameters": [
          {
            "description": "The entry's key, 64 hexadecimal characters.",
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "pattern": "^[a-f0-9]{64}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SAMJournalApiEntry"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A journal entry",
        "tags": [
          "journal"
        ]
      }
    },
    "/llm-clients/": {
      "get": {
        "description": "The LLMClients that the user may read. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LLMClientApiLLMClient"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List LLMClients",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/": {
      "get": {
        "description": "An LLMClient, with its extensions, plugins, custom domains, api keys and urls. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_retrieve",
        "parameters": [
          {
            "description": "The LLMClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMClientApiLLMClient"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMClient",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/apikeys/": {
      "get": {
        "description": "The api keys of an LLMClient: the ids of their SmarterAuthTokens, never the keys. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_apikey_list",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LLMClientApiKey"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMClient's api keys",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/apikeys/{apikey_id}/": {
      "get": {
        "description": "An api key of an LLMClient, by the LLMClientAPIKey's id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_apikey_retrieve",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "The LLMClientAPIKey's id.",
            "in": "path",
            "name": "apikey_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMClientApiKey"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An api key of an LLMClient",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/config/": {
      "post": {
        "description": "The configuration of a chat with an LLMClient, and a chat session: a new one, or the one whose key is sent. Its session_key identifies the session in the following prompts, and url_llmclient is where to send them.",
        "operationId": "llmclient_config",
        "parameters": [
          {
            "description": "The LLMClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The chat session's key. The platform looks for it in this parameter, then in the request body, a header and a cookie, in that order.",
            "in": "query",
            "name": "session_key",
            "required": false,
            "schema": {
              "pattern": "^[a-f0-9]{64}$",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of the client's capabilities. chat-contract-v2 asks for version 2 of the Smarter Chat api contract, which this document describes, and which is also the default. chat-contract-v1 asks for the deprecated version 1.",
            "in": "header",
            "name": "X-Smarter-Capabilities",
            "required": false,
            "schema": {
              "default": "chat-contract-v2",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromptChatApiConfigRequest"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptChatApiConfigResponse"
                }
              }
            },
            "description": "The configuration."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptChatApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for an LLMClient that does not exist, or that the user may not read."
          }
        },
        "summary": "An LLMClient's chat configuration",
        "tags": [
          "chat"
        ]
      }
    },
    "/llm-clients/{id}/customdomains": {
      "get": {
        "description": "The custom domain of an LLMClient, as a list of none or one. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_customdomain_list",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LLMClientApiCustomDomain"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMClient's custom domains",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/customdomains/{customdomain_id}": {
      "get": {
        "description": "A custom domain of an LLMClient, by its id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_customdomain_retrieve",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "The LLMClientCustomDomain's id.",
            "in": "path",
            "name": "customdomain_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMClientApiCustomDomain"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A custom domain of an LLMClient",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/extensions": {
      "get": {
        "description": "The extensions whose tools an LLMClient offers the LLM. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_extension_list",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LLMClientApiExtension"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMClient's extensions",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/extensions/{extension_id}": {
      "get": {
        "description": "An extension of an LLMClient, by the LLMClientExtensions' id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_extension_retrieve",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "The LLMClientExtensions' id.",
            "in": "path",
            "name": "extension_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMClientApiExtension"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An extension of an LLMClient",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/plugins/": {
      "get": {
        "description": "The plugins of an LLMClient, each with the plugin's metadata. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_plugin_list",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LLMClientApiPlugin"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMClient's plugins",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/plugins/{plugin_id}/": {
      "get": {
        "description": "A plugin of an LLMClient, by the LLMClientPlugin's id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "llmclient_plugin_retrieve",
        "parameters": [
          {
            "description": "The LLMClient's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "The LLMClientPlugin's id.",
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMClientApiPlugin"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A plugin of an LLMClient",
        "tags": [
          "llmclients"
        ]
      }
    },
    "/llm-clients/{id}/prompt/": {
      "post": {
        "description": "Run a prompt: the platform selects plugins, calls the LLM, runs the tools that the LLM calls, and applies the Guardrails, then returns the messages that the prompt added to the chat. Prompts are billed by the LLM provider. A streaming client receives progress events while the prompt runs, then the result, whose status is the prompt's http status.",
        "operationId": "llmclient_prompt",
        "parameters": [
          {
            "description": "The LLMClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The chat session's key. The platform looks for it in this parameter, then in the request body, a header and a cookie, in that order.",
            "in": "query",
            "name": "session_key",
            "required": false,
            "schema": {
              "pattern": "^[a-f0-9]{64}$",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of the client's capabilities. chat-contract-v2 asks for version 2 of the Smarter Chat api contract, which this document describes, and which is also the default. chat-contract-v1 asks for the deprecated version 1.",
            "in": "header",
            "name": "X-Smarter-Capabilities",
            "required": false,
            "schema": {
              "default": "chat-contract-v2",
              "type": "string"
            }
          },
          {
            "description": "text/event-stream streams the prompt's progress as Server-Sent Events. Otherwise, the response is the prompt's JSON.",
            "in": "header",
            "name": "Accept",
            "required": false,
            "schema": {
              "default": "application/json",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromptChatApiPromptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptChatApiPromptResponse"
                }
              },
              "text/event-stream": {
                "schema": {
                  "description": "Server-Sent Events: retry, then a progress event per step, keepalive comments while the prompt waits, and a result event, last. Each event's data is JSON.",
                  "type": "string"
                },
                "x-smarter-events": {
                  "progress": {
                    "$ref": "#/components/schemas/PromptChatApiProgressEvent"
                  },
                  "result": {
                    "$ref": "#/components/schemas/PromptChatApiProgressResult"
                  }
                }
              }
            },
            "description": "The prompt's result, as JSON, or as a stream of Server-Sent Events."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMClientPromptErrorResponse"
                }
              }
            },
            "description": "An error."
          }
        },
        "summary": "Prompt an LLMClient",
        "tags": [
          "chat"
        ]
      }
    },
    "/llmhosts/": {
      "get": {
        "description": "The LLMHosts that the user may read, by name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "llmhost_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/LLMHostApiLLMHost"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List LLMHosts",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/discover/": {
      "get": {
        "description": "Search a model catalog, most popular first, to choose a model to host. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "llmhost_discover",
        "parameters": [
          {
            "description": "The text to search for.",
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only models of this task.",
            "in": "query",
            "name": "task",
            "required": false,
            "schema": {
              "enum": [
                "text-generation",
                "embedding"
              ],
              "type": "string"
            }
          },
          {
            "description": "The catalog.",
            "in": "query",
            "name": "catalog",
            "required": false,
            "schema": {
              "default": "huggingface",
              "enum": [
                "huggingface",
                "builtin"
              ],
              "type": "string"
            }
          },
          {
            "description": "The number of models, at most 50.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiDiscovery"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "Search a model catalog",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/discover/manifest/": {
      "get": {
        "description": "Draft an LLMHost manifest for a model of a catalog, to review and apply. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "llmhost_discover_manifest",
        "parameters": [
          {
            "description": "The model, e.g. meta-llama/Llama-3.1-8B-Instruct.",
            "in": "query",
            "name": "repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The catalog.",
            "in": "query",
            "name": "catalog",
            "required": false,
            "schema": {
              "default": "huggingface",
              "type": "string"
            }
          },
          {
            "description": "The inference engine, e.g. vllm.",
            "in": "query",
            "name": "engine",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The LLMHost's name.",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the Secret of a token for gated models.",
            "in": "query",
            "name": "tokenSecret",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiDraftManifest"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "Draft an LLMHost manifest",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/report/": {
      "get": {
        "description": "A summary of the LLMHosts that the user owns: their status, GPUs and cost. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "llmhost_report",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiReport"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A report of LLMHosts",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/{id}/": {
      "get": {
        "description": "An LLMHost that the user may read. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "llmhost_retrieve",
        "parameters": [
          {
            "description": "The LLMHost's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiLLMHost"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMHost",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/{id}/deploy/": {
      "post": {
        "description": "Launch the LLMHost's inference server on the platform's Kubernetes cluster. It creates billable infrastructure, e.g. GPU nodes, and returns before the server is ready. Only the LLMHost's owner may call it.",
        "operationId": "llmhost_deploy",
        "parameters": [
          {
            "description": "The LLMHost's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiStatus"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Deploy an LLMHost",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/{id}/logs/": {
      "get": {
        "description": "The inference server's recent logs. Only the LLMHost's owner may call it.",
        "operationId": "llmhost_logs",
        "parameters": [
          {
            "description": "The LLMHost's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of lines.",
            "in": "query",
            "name": "tail",
            "required": false,
            "schema": {
              "default": 200,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiLogs"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMHost's logs",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/{id}/plan/": {
      "get": {
        "description": "The Kubernetes resources that a deployment would apply, with secrets redacted. Only the LLMHost's owner may call it.",
        "operationId": "llmhost_plan",
        "parameters": [
          {
            "description": "The LLMHost's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiPlan"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMHost's deployment plan",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/{id}/status/": {
      "get": {
        "description": "Check an LLMHost's status now, with its pods and health check. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "llmhost_status",
        "parameters": [
          {
            "description": "The LLMHost's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiStatus"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An LLMHost's status",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/llmhosts/{id}/undeploy/": {
      "post": {
        "description": "Destroy the LLMHost's Kubernetes resources. The LLMHost remains. Only the LLMHost's owner may call it.",
        "operationId": "llmhost_undeploy",
        "parameters": [
          {
            "description": "The LLMHost's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "true also deletes the model volume, and the weights cached on it.",
            "in": "query",
            "name": "purge",
            "required": false,
            "schema": {
              "default": "false",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMHostApiUndeployed"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Undeploy an LLMHost",
        "tags": [
          "llmhosts"
        ]
      }
    },
    "/mcpclients/": {
      "get": {
        "description": "The MCPClients that the user may read, by name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "mcpclient_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MCPClientApiMCPClient"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List MCPClients",
        "tags": [
          "mcpclients"
        ]
      }
    },
    "/mcpclients/{id}/": {
      "get": {
        "description": "An MCPClient that the user may read. Its credentials are their Secret's name, never its value. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "mcpclient_retrieve",
        "parameters": [
          {
            "description": "The MCPClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPClientApiMCPClient"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An MCPClient",
        "tags": [
          "mcpclients"
        ]
      }
    },
    "/mcpclients/{id}/refresh/": {
      "post": {
        "description": "Reconnect to the MCPClient's server, refresh its catalog, and return its connection status. Only the MCPClient's owner may reconnect it.",
        "operationId": "mcpclient_refresh",
        "parameters": [
          {
            "description": "The MCPClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPClientApiStatus"
                }
              }
            },
            "description": "The connection status."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPClientApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 502 for an MCP server that failed, 403 for a user who does not own the MCPClient, or 404 for an MCPClient that the user may not read."
          }
        },
        "summary": "Reconnect an MCPClient",
        "tags": [
          "mcpclients"
        ]
      }
    },
    "/mcpclients/{id}/tools/": {
      "get": {
        "description": "The tools that the MCPClient offers the LLM, from its server's cached catalog, with its connection status and the server's instructions. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "mcpclient_tools",
        "parameters": [
          {
            "description": "The MCPClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "true reconnects to the MCP server first, rather than reading the cached catalog.",
            "in": "query",
            "name": "refresh",
            "required": false,
            "schema": {
              "default": "false",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPClientApiTools"
                }
              }
            },
            "description": "The tools."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPClientApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 502 for an MCP server that failed, 403 for a user who does not own the MCPClient, or 404 for an MCPClient that the user may not read."
          }
        },
        "summary": "An MCPClient's tools",
        "tags": [
          "mcpclients"
        ]
      }
    },
    "/mcpclients/{id}/tools/{tool_name}/": {
      "post": {
        "description": "Call one of the tools that the MCPClient allows, with the request body as its arguments, and return its result as text. The tool runs on the MCP server, and may change what the server manages. Only the MCPClient's owner may call its tools.",
        "operationId": "mcpclient_tool_call",
        "parameters": [
          {
            "description": "The MCPClient's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The tool's name.",
            "in": "path",
            "name": "tool_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "description": "The tool's arguments, as its input schema describes them.",
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPClientApiToolResult"
                }
              }
            },
            "description": "The tool's result."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 403 for a tool that the MCPClient does not allow, or 502 for a failed server."
          }
        },
        "summary": "Call an MCPClient's tool",
        "tags": [
          "mcpclients"
        ]
      }
    },
    "/orchestrators/": {
      "get": {
        "description": "The Orchestrators that the user may read, by name. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "orchestrator_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/OrchestratorApiOrchestrator"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List orchestrators",
        "tags": [
          "orchestrators"
        ]
      }
    },
    "/orchestrators/{id}/": {
      "get": {
        "description": "An Orchestrator, by its id or hashed id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "orchestrator_retrieve",
        "parameters": [
          {
            "description": "The Orchestrator's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorApiOrchestrator"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "An Orchestrator",
        "tags": [
          "orchestrators"
        ]
      }
    },
    "/plugins/": {
      "get": {
        "description": "The plugins that the user owns, newest first: their metadata. Requires an api key.",
        "operationId": "plugin_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PluginApiPluginMeta"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List plugins",
        "tags": [
          "plugins"
        ]
      }
    },
    "/plugins/{plugin_id}/": {
      "get": {
        "description": "A plugin's manifest, if the user may read the plugin. It is served only while the platform's ALLOW_API_GET switch is active, and answers 405 otherwise. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "plugin_retrieve",
        "parameters": [
          {
            "description": "The plugin's id.",
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SAMManifest"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A plugin",
        "tags": [
          "plugins"
        ]
      }
    },
    "/prompts/history/plugin-usage/": {
      "get": {
        "description": "The plugins that the chat sessions used. Requires an api key. The response includes only the chat sessions whose user the user may manage: their own, their account's users' for an account admin, and every one for a superuser.",
        "operationId": "history_plugin_usage_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PromptHistoryApiPluginUsage"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List plugin usage",
        "tags": [
          "history"
        ]
      }
    },
    "/prompts/history/plugin-usage/{id}/": {
      "get": {
        "description": "A use of a plugin in a chat session. Requires an api key. The response includes only the chat sessions whose user the user may manage: their own, their account's users' for an account admin, and every one for a superuser.",
        "operationId": "history_plugin_usage_retrieve",
        "parameters": [
          {
            "description": "The row's id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptHistoryApiPluginUsage"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A plugin usage",
        "tags": [
          "history"
        ]
      }
    },
    "/prompts/history/prompt/": {
      "get": {
        "description": "The chat sessions: each conversation with an LLMClient. Requires an api key. The response includes only the chat sessions whose user the user may manage: their own, their account's users' for an account admin, and every one for a superuser.",
        "operationId": "history_session_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PromptHistoryApiSession"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List chat sessions",
        "tags": [
          "history"
        ]
      }
    },
    "/prompts/history/prompt/{id}/": {
      "get": {
        "description": "A chat session. Requires an api key. The response includes only the chat sessions whose user the user may manage: their own, their account's users' for an account admin, and every one for a superuser.",
        "operationId": "history_session_retrieve",
        "parameters": [
          {
            "description": "The row's id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptHistoryApiSession"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A chat session",
        "tags": [
          "history"
        ]
      }
    },
    "/prompts/history/tool-calls/": {
      "get": {
        "description": "The tool calls that the LLMs made in the chat sessions, with their input and result. Requires an api key. The response includes only the chat sessions whose user the user may manage: their own, their account's users' for an account admin, and every one for a superuser.",
        "operationId": "history_tool_call_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PromptHistoryApiToolCall"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List tool calls",
        "tags": [
          "history"
        ]
      }
    },
    "/prompts/history/tool-calls/{id}/": {
      "get": {
        "description": "A tool call. Requires an api key. The response includes only the chat sessions whose user the user may manage: their own, their account's users' for an account admin, and every one for a superuser.",
        "operationId": "history_tool_call_retrieve",
        "parameters": [
          {
            "description": "The row's id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptHistoryApiToolCall"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A tool call",
        "tags": [
          "history"
        ]
      }
    },
    "/providers/": {
      "get": {
        "description": "The active Providers that the user may read, by name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "provider_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ProviderApiProvider"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List Providers",
        "tags": [
          "providers"
        ]
      }
    },
    "/providers/{name}/": {
      "get": {
        "description": "An active Provider that the user may read. The user's own account's wins over another of the same name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "provider_retrieve",
        "parameters": [
          {
            "description": "The Provider's name, e.g. openai.",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderApiProvider"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Provider",
        "tags": [
          "providers"
        ]
      }
    },
    "/providers/{name}/models/": {
      "get": {
        "description": "The active models of a Provider, by name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "provider_models",
        "parameters": [
          {
            "description": "The Provider's name, e.g. openai.",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ProviderApiModel"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Provider's models",
        "tags": [
          "providers"
        ]
      }
    },
    "/providers/{name}/models/{model_name}/": {
      "get": {
        "description": "An active model of a Provider. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "provider_model",
        "parameters": [
          {
            "description": "The Provider's name, e.g. openai.",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The model's name, e.g. gpt-4o.",
            "in": "path",
            "name": "model_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderApiModel"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Provider's model",
        "tags": [
          "providers"
        ]
      }
    },
    "/proxy/": {
      "get": {
        "description": "The Proxies that the user may use, with their urls. Send a provider's requests to a Proxy's url, with a Smarter api key, and the Proxy forwards them with the provider's. Requires an api key.",
        "operationId": "proxy_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProxyApiProxies"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List Proxies",
        "tags": [
          "proxies"
        ]
      }
    },
    "/secrets/": {
      "get": {
        "description": "The Secrets of the user's accounts: their metadata, never their values. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "secret_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SecretApiSecret"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List Secrets",
        "tags": [
          "secrets"
        ]
      }
    },
    "/secrets/{id}/": {
      "get": {
        "description": "A Secret of the user's accounts: its metadata, never its value. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "secret_retrieve",
        "parameters": [
          {
            "description": "The Secret's numeric id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretApiSecret"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Secret",
        "tags": [
          "secrets"
        ]
      }
    },
    "/vectorsearches/": {
      "get": {
        "description": "The Vectorsearchs that the user may read, by name. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "vectorsearch_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/VectorsearchApiVectorsearch"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List vectorsearches",
        "tags": [
          "vectorsearches"
        ]
      }
    },
    "/vectorsearches/{id}/": {
      "get": {
        "description": "A Vectorsearch, by its id or hashed id. Requires an api key of a superuser: the REST api's views refuse other users with a 403. Other users read their resources with the cli api's get and describe.",
        "operationId": "vectorsearch_retrieve",
        "parameters": [
          {
            "description": "The Vectorsearch's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorsearchApiVectorsearch"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A Vectorsearch",
        "tags": [
          "vectorsearches"
        ]
      }
    },
    "/vectorstores/": {
      "get": {
        "description": "The vectorstores that the user may read, by name. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "vectorstore_list",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/VectorstoreApiVectorstore"
                  },
                  "type": "array"
                }
              }
            },
            "description": "The list."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "List vectorstores",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/": {
      "get": {
        "description": "A vectorstore that the user may read. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "vectorstore_retrieve",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiVectorstore"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/deploy/": {
      "post": {
        "description": "Create the vectorstore's database: a Qdrant server on the platform's Kubernetes cluster, or a Pinecone index. It creates billable infrastructure, and returns before it is ready. Only the vectorstore's owner may call it.",
        "operationId": "vectorstore_deploy",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiVectorstore"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Deploy a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/documents/": {
      "get": {
        "description": "The vectorstore's documents, newest first, without their content. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "vectorstore_documents",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiDocuments"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A vectorstore's documents",
        "tags": [
          "vectorstores"
        ]
      },
      "post": {
        "description": "Add documents, and queue them to be loaded if the vectorstore is ready: a text, the document at a url, or files as multipart/form-data, whose text is extracted now. A document whose content the vectorstore already has is a duplicate, and is not added again. Only the vectorstore's owner may call it.",
        "operationId": "vectorstore_add_documents",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VectorstoreApiAddText"
              }
            },
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "files": {
                    "description": "The files, e.g. PDFs and Word documents, of at most 50 MiB each.",
                    "items": {
                      "contentMediaType": "application/octet-stream",
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "metadata": {
                    "description": "Metadata to store with each chunk, as a JSON object.",
                    "type": "string"
                  }
                },
                "required": [
                  "files"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiDocumentsAdded"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Add documents to a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/documents/{document_id}/": {
      "delete": {
        "description": "Remove a document and its chunks. They are removed in the background. Only the vectorstore's owner may call it.",
        "operationId": "vectorstore_delete_document",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The document's id.",
            "in": "path",
            "name": "document_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiDocumentDeleted"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Remove a document from a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/search/": {
      "post": {
        "description": "Find the chunks most similar to a query. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "vectorstore_search",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VectorstoreApiSearch"
              }
            }
          },
          "description": "The query, and how to search.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiSearchResults"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Search a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/snapshots/": {
      "get": {
        "description": "The vectorstore's snapshots: Qdrant snapshots, or Pinecone backups. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "vectorstore_snapshots",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiSnapshots"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A vectorstore's snapshots",
        "tags": [
          "vectorstores"
        ]
      },
      "post": {
        "description": "Take a snapshot of the vectorstore's data now. Only the vectorstore's owner may call it.",
        "operationId": "vectorstore_create_snapshot",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiSnapshot"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Snapshot a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/snapshots/{snapshot_id}/restore/": {
      "post": {
        "description": "Replace the vectorstore's data with one of its snapshots. Only the vectorstore's owner may call it.",
        "operationId": "vectorstore_restore",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The snapshot's id.",
            "in": "path",
            "name": "snapshot_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiRestored"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Restore a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/status/": {
      "get": {
        "description": "Check a vectorstore's status and statistics now, with its database. Requires an api key. The response includes only what the user may read: their account's resources, and the platform's built-in ones.",
        "operationId": "vectorstore_status",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiStatus"
                }
              }
            },
            "description": "The row."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 404 for a row that does not exist, or 403 for a user who is not a superuser."
          }
        },
        "summary": "A vectorstore's status",
        "tags": [
          "vectorstores"
        ]
      }
    },
    "/vectorstores/{id}/undeploy/": {
      "post": {
        "description": "Stop serving the vectorstore. A self-hosted server's data is kept. Only the vectorstore's owner may call it.",
        "operationId": "vectorstore_undeploy",
        "parameters": [
          {
            "description": "The vectorstore's numeric id, e.g. 12, or its hashed id, e.g. rMTAwMDAxMgx.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorstoreApiVectorstore"
                }
              }
            },
            "description": "Success."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestApiErrorResponse"
                }
              }
            },
            "description": "An error, e.g. 400 for an invalid request, or 404 for a row that the user may not read or own."
          }
        },
        "summary": "Undeploy a vectorstore",
        "tags": [
          "vectorstores"
        ]
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "servers": [
    {
      "url": "http://ubc.smarter.sh/api/v1",
      "description": "This platform."
    },
    {
      "description": "A Smarter platform.",
      "url": "{platform}/api/v1",
      "variables": {
        "platform": {
          "default": "https://platform.smarter.sh",
          "description": "The platform's url, with its scheme."
        }
      }
    },
    {
      "description": "A local development platform.",
      "url": "http://localhost:9357/api/v1"
    }
  ],
  "tags": [
    {
      "description": "Resources, and the manifests that declare them.",
      "name": "manifests"
    },
    {
      "description": "Deployable resources, e.g. LLMClients.",
      "name": "deployment"
    },
    {
      "description": "The platform, and the api key's user.",
      "name": "platform"
    },
    {
      "description": "Chats with LLMClients.",
      "name": "chat"
    },
    {
      "description": "The LLMClients' REST reads.",
      "name": "llmclients"
    },
    {
      "description": "The Guardrails' REST reads, and their dry run.",
      "name": "guardrails"
    },
    {
      "description": "The Secrets' REST reads: their metadata, never their values.",
      "name": "secrets"
    },
    {
      "description": "The MCPClients' REST reads, their reconnection, and tool calls.",
      "name": "mcpclients"
    },
    {
      "description": "The vectorstores' REST reads, search, documents and maintenance. Served only when the platform enables vectorstores (SMARTER_ENABLE_VECTORSTORE).",
      "name": "vectorstores"
    },
    {
      "description": "The LLMHosts' REST reads, model discovery, and deployment.",
      "name": "llmhosts"
    },
    {
      "description": "The plugins' REST reads.",
      "name": "plugins"
    },
    {
      "description": "The LLM Providers' REST reads, and their models.",
      "name": "providers"
    },
    {
      "description": "The Proxies that the user may use. Served only when the platform enables Proxies (SMARTER_ENABLE_PROXY).",
      "name": "proxies"
    },
    {
      "description": "The accounts, their users and contacts. For superusers.",
      "name": "accounts"
    },
    {
      "description": "The chat sessions, and their tool calls and plugin usage.",
      "name": "history"
    },
    {
      "description": "The Smarter Journal: a record of every request to the cli api. For superusers.",
      "name": "journal"
    },
    {
      "description": "The Orchestrators' REST reads. For superusers.",
      "name": "orchestrators"
    },
    {
      "description": "The Vectorsearches' REST reads. For superusers.",
      "name": "vectorsearches"
    }
  ]
}