Databricks SDK for JavaScript
    Preparing search index...

    Behavioral configuration for a ModelProviderService: provider connection (auth + provider-specific fields), the catalog of models this provider service can route to, and the passthrough policy that governs how request headers, query parameters, and unmanaged subpaths cross the trust boundary to the upstream provider.

    interface ModelProviderServiceConfig {
        allowAllTargets?: boolean;
        forwardHeaders?: boolean;
        forwardQueryParameters?: boolean;
        forwardUnmanagedPaths?: boolean;
        inferenceTable?: InferenceTableConfig;
        provider?:
            | {
                $case: "openai";
                openai: ModelProviderServiceConfig_OpenAiProviderConfig;
            }
            | {
                $case: "azureOpenai";
                azureOpenai: ModelProviderServiceConfig_AzureOpenAiProviderConfig;
            }
            | {
                $case: "anthropic";
                anthropic: ModelProviderServiceConfig_AnthropicProviderConfig;
            }
            | {
                $case: "amazonBedrock";
                amazonBedrock: ModelProviderServiceConfig_AmazonBedrockProviderConfig;
            }
            | {
                $case: "custom";
                custom: ModelProviderServiceConfig_CustomProviderConfig;
            }
            | {
                $case: "microsoftFoundry";
                microsoftFoundry: ModelProviderServiceConfig_MicrosoftFoundryProviderConfig;
            }
            | {
                $case: "geminiEnterprise";
                geminiEnterprise: ModelProviderServiceConfig_GeminiEnterpriseProviderConfig;
            };
        providerType?: ModelProviderServiceConfig_ExternalModelProviderType;
        rateLimits?: RateLimit[];
        targets?: ModelProviderServiceConfig_ModelTargetConfig[];
    }
    Index

    Properties

    allowAllTargets?: boolean

    When true, accepts any model exposed by the upstream provider; targets is not required and does not restrict routability. When false, only models listed in targets are routable.

    forwardHeaders?: boolean

    Whether to forward incoming request headers to the upstream provider. Applies to managed (multi-model) requests as well as passthrough requests served by this provider service. Governance-level decision by the provider service owner; not selectable per inference call.

    forwardQueryParameters?: boolean

    Whether to forward incoming request query parameters to the upstream provider. Same trust-boundary semantics as forward_headers.

    forwardUnmanagedPaths?: boolean

    Whether to forward request paths that fall outside this service's managed API set to the upstream provider as opaque passthrough. When true, requests addressed to subpaths not recognized by the managed API surface are proxied to the upstream provider over the same provider connection. When false, only managed-API paths are served. Governance-level decision by the provider service owner; expanding this expands the trust boundary that the ModelProviderService exposes.

    inferenceTable?: InferenceTableConfig

    Inference table configuration for payload logging when this provider service is invoked directly. When it is invoked through a model service, the model service's own inference table captures the invocation instead. Mirrors ModelServiceConfig.inference_table / AgentServiceConfig.inference_table.

    provider?:
        | {
            $case: "openai";
            openai: ModelProviderServiceConfig_OpenAiProviderConfig;
        }
        | {
            $case: "azureOpenai";
            azureOpenai: ModelProviderServiceConfig_AzureOpenAiProviderConfig;
        }
        | {
            $case: "anthropic";
            anthropic: ModelProviderServiceConfig_AnthropicProviderConfig;
        }
        | {
            $case: "amazonBedrock";
            amazonBedrock: ModelProviderServiceConfig_AmazonBedrockProviderConfig;
        }
        | {
            $case: "custom";
            custom: ModelProviderServiceConfig_CustomProviderConfig;
        }
        | {
            $case: "microsoftFoundry";
            microsoftFoundry: ModelProviderServiceConfig_MicrosoftFoundryProviderConfig;
        }
        | {
            $case: "geminiEnterprise";
            geminiEnterprise: ModelProviderServiceConfig_GeminiEnterpriseProviderConfig;
        }

    Provider-specific configuration. Exactly one variant must be set, and it must match provider_type; a request whose active variant disagrees with provider_type is rejected with INVALID_PARAMETER_VALUE. Secret-bearing fields nested inside each *DirectConfig (api_key, aws_secret_access_key, service_account_key, ...) wrap a ProviderSecret: callers supply the value as ProviderSecret.plaintext on writes, and the platform stores it encrypted. Reads (Get and List) omit the plaintext; secret-bearing fields appear in the response only as a presence indicator that a secret is configured. Non-secret fields (base_url, region, organization, aws_access_key_id, ...) round-trip directly.

    Declarative tooling (Terraform / DABs): the plaintext field is INPUT_ONLY and never round-trips on reads, so a Terraform config that supplies it will see a structural diff against the read state on every terraform plan unless mitigated. Mitigations, in order of preference: (a) use Terraform 1.11+ WriteOnly attribute on plaintext in the provider schema; (b) add provider DiffSuppressFunc for the secret field; (c) document lifecycle.ignore_changes = [<secret_field>] for callers. The stored secret is normally changed through UpdateModelProviderService.

    (-- Secrets are persisted as the encrypted credential of a per-MPS UC SchemaConnection (CONNECTION_HTTP_BEARER). The auto-minted SchemaConnection is user-owned but hidden from the user, so it is not surfaced as a connection they manage directly even though the credential could in principle be changed out of band. --)

    (-- Field-behavior on the per-provider config fields: (google.api.field_behavior) = OPTIONAL everywhere on the *DirectConfig descendants, with Create-time requirements enforced in the validator. Proto-level REQUIRED is deliberately not used per the proto-required-vs-update-mask guardrail: REQUIRED would reject sparse Update requests that legitimately omit a field whose value is unchanged, breaking AIP-134 partial-Update. The user-facing javadoc on each field states which fields are required on Create. --)

    Provider type discriminator. Required at create time; immutable after. Determines which variant of the provider oneof must be set. May not be changed via Update; attempts to include config.provider_type in UpdateModelProviderServiceRequest.update_mask are rejected.

    Required on CreateModelProviderService and immutable thereafter.

    rateLimits?: RateLimit[]

    Rate limits applied when this provider service is invoked directly. When it is invoked through a model service, the model service's own rate_limits apply instead. Mirrors ModelServiceConfig.rate_limits / McpServiceConfig.rate_limits.

    Routing targets this provider service exposes (provider-side model identifier + unified API types per entry). Required (>=1) when allow_all_targets = false; optional and additive when allow_all_targets = true. References from ExternalModelConfig.target must match an entry here unless allow_all_targets = true.